bt_component_class_finalize_method finalize_method;
bt_component_class_query_method query_method;
bt_component_class_accept_port_connection_method accept_port_connection_method;
+ bt_component_class_port_connected_method port_connected_method;
bt_component_class_port_disconnected_method port_disconnected_method;
struct bt_component_class_iterator_methods iterator_methods;
};
cc_full_descr->accept_port_connection_method =
cur_cc_descr_attr->value.accept_port_connection_method;
break;
+ case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_CONNECTED_METHOD:
+ cc_full_descr->port_connected_method =
+ cur_cc_descr_attr->value.port_connected_method;
+ break;
case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_PORT_DISCONNECTED_METHOD:
cc_full_descr->port_disconnected_method =
cur_cc_descr_attr->value.port_disconnected_method;
}
}
+ if (cc_full_descr->port_connected_method) {
+ ret = bt_component_class_set_port_connected_method(
+ comp_class, cc_full_descr->port_connected_method);
+ if (ret) {
+ status = BT_PLUGIN_STATUS_ERROR;
+ BT_PUT(comp_class);
+ goto end;
+ }
+ }
+
if (cc_full_descr->port_disconnected_method) {
ret = bt_component_class_set_port_disconnected_method(
comp_class, cc_full_descr->port_disconnected_method);
}
BT_HIDDEN
-int bt_plugin_so_on_add_component_class(struct bt_plugin *plugin,
+void bt_plugin_so_on_add_component_class(struct bt_plugin *plugin,
struct bt_component_class *comp_class)
{
- int ret;
struct bt_plugin_so_spec_data *spec = plugin->spec_data;
assert(plugin->spec_data);
bt_get(spec->shared_lib_handle));
/* Add our custom destroy listener */
- ret = bt_component_class_add_destroy_listener(comp_class,
+ bt_component_class_add_destroy_listener(comp_class,
plugin_comp_class_destroy_listener, NULL);
- if (ret) {
- goto error;
- }
- goto end;
-
-error:
- /* Remove entry from global hash table (if exists) */
- g_hash_table_remove(comp_classes_to_shlib_handles,
- comp_class);
-
-end:
- return ret;
}