bt_component_create(): create convenient empty map parameters when NULL
[babeltrace.git] / lib / graph / component.c
index 9b996f624bb4e9854412f23b605cc47c37d35b4e..31abc0737c554574e18e5b09df5bd79ff0474132 100644 (file)
@@ -195,6 +195,8 @@ struct bt_component *bt_component_create_with_init_method_data(
        enum bt_component_class_type type;
        struct bt_port *default_port = NULL;
 
+       bt_get(params);
+
        if (!component_class) {
                goto end;
        }
@@ -205,6 +207,21 @@ struct bt_component *bt_component_create_with_init_method_data(
                goto end;
        }
 
+       /*
+        * Parameters must be a map value, but we create a convenient
+        * empty one if it's NULL.
+        */
+       if (params) {
+               if (!bt_value_is_map(params)) {
+                       goto end;
+               }
+       } else {
+               params = bt_value_map_create();
+               if (!params) {
+                       goto end;
+               }
+       }
+
        component = component_create_funcs[type](component_class, params);
        if (!component) {
                goto end;
@@ -281,6 +298,7 @@ struct bt_component *bt_component_create_with_init_method_data(
 
        bt_component_class_freeze(component->class);
 end:
+       bt_put(params);
        bt_put(default_port);
        return component;
 }
@@ -553,6 +571,21 @@ enum bt_component_status bt_component_accept_port_connection(
        return status;
 }
 
+BT_HIDDEN
+void bt_component_port_connected(struct bt_component *comp,
+               struct bt_port *self_port, struct bt_port *other_port)
+{
+       assert(comp);
+       assert(self_port);
+       assert(other_port);
+
+       if (comp->class->methods.port_connected) {
+               comp->class->methods.port_connected(
+                       bt_private_component_from_component(comp),
+                       bt_private_port_from_port(self_port), other_port);
+       }
+}
+
 BT_HIDDEN
 void bt_component_port_disconnected(struct bt_component *comp,
                struct bt_port *port)
This page took 0.025529 seconds and 4 git commands to generate.