enum bt_component_class_type type;
struct bt_port *default_port = NULL;
+ bt_get(params);
+
if (!component_class) {
goto end;
}
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;
bt_component_class_freeze(component->class);
end:
+ bt_put(params);
bt_put(default_port);
return component;
}
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)