X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=lib%2Fplugin%2Fplugin-so.c;h=4fc939e5b13cfb182ed7960e01b2c8c58856c62c;hb=41a2b7aeccec8153fc6845819a0ca98461f35cb1;hp=83c5e10ef02af4de54e95703596c6265205dece3;hpb=a67681c1f02f54bc1f708d449bceb35476024083;p=babeltrace.git diff --git a/lib/plugin/plugin-so.c b/lib/plugin/plugin-so.c index 83c5e10e..4fc939e5 100644 --- a/lib/plugin/plugin-so.c +++ b/lib/plugin/plugin-so.c @@ -188,7 +188,7 @@ end: return shared_lib_handle; } -BT_HIDDEN +static void bt_plugin_so_destroy_spec_data(struct bt_plugin *plugin) { struct bt_plugin_so_spec_data *spec = plugin->spec_data; @@ -251,10 +251,10 @@ enum bt_plugin_status bt_plugin_so_init( const char *description; const char *help; bt_component_class_init_method init_method; - bt_component_class_destroy_method destroy_method; + bt_component_class_finalize_method finalize_method; bt_component_class_query_method query_method; - bt_component_class_filter_add_iterator_method filter_add_iterator_method; - bt_component_class_sink_add_iterator_method sink_add_iterator_method; + bt_component_class_accept_port_connection_method accept_port_connection_method; + bt_component_class_port_disconnected_method port_disconnected_method; struct bt_component_class_iterator_methods iterator_methods; }; @@ -375,29 +375,29 @@ enum bt_plugin_status bt_plugin_so_init( cc_full_descr->init_method = cur_cc_descr_attr->value.init_method; break; - case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_DESTROY_METHOD: - cc_full_descr->destroy_method = - cur_cc_descr_attr->value.destroy_method; + case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FINALIZE_METHOD: + cc_full_descr->finalize_method = + cur_cc_descr_attr->value.finalize_method; break; case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_METHOD: cc_full_descr->query_method = cur_cc_descr_attr->value.query_method; break; - case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_FILTER_ADD_ITERATOR_METHOD: - cc_full_descr->filter_add_iterator_method = - cur_cc_descr_attr->value.filter_add_iterator_method; + case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_ACCEPT_PORT_CONNECTION_METHOD: + 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_SINK_ADD_ITERATOR_METHOD: - cc_full_descr->sink_add_iterator_method = - cur_cc_descr_attr->value.sink_add_iterator_method; + 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; break; case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_INIT_METHOD: cc_full_descr->iterator_methods.init = cur_cc_descr_attr->value.notif_iter_init_method; break; - case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_DESTROY_METHOD: - cc_full_descr->iterator_methods.destroy = - cur_cc_descr_attr->value.notif_iter_destroy_method; + case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_FINALIZE_METHOD: + cc_full_descr->iterator_methods.finalize = + cur_cc_descr_attr->value.notif_iter_finalize_method; break; case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_NOTIF_ITER_SEEK_TIME_METHOD: cc_full_descr->iterator_methods.seek_time = @@ -439,13 +439,11 @@ enum bt_plugin_status bt_plugin_so_init( case BT_COMPONENT_CLASS_TYPE_SOURCE: comp_class = bt_component_class_source_create( cc_full_descr->descriptor->name, - cc_full_descr->descriptor->methods.source.notif_iter_get, cc_full_descr->descriptor->methods.source.notif_iter_next); break; case BT_COMPONENT_CLASS_TYPE_FILTER: comp_class = bt_component_class_filter_create( cc_full_descr->descriptor->name, - cc_full_descr->descriptor->methods.source.notif_iter_get, cc_full_descr->descriptor->methods.source.notif_iter_next); break; case BT_COMPONENT_CLASS_TYPE_SINK: @@ -496,9 +494,9 @@ enum bt_plugin_status bt_plugin_so_init( } } - if (cc_full_descr->destroy_method) { - ret = bt_component_class_set_destroy_method(comp_class, - cc_full_descr->destroy_method); + if (cc_full_descr->finalize_method) { + ret = bt_component_class_set_finalize_method(comp_class, + cc_full_descr->finalize_method); if (ret) { status = BT_PLUGIN_STATUS_ERROR; BT_PUT(comp_class); @@ -516,6 +514,26 @@ enum bt_plugin_status bt_plugin_so_init( } } + if (cc_full_descr->accept_port_connection_method) { + ret = bt_component_class_set_accept_port_connection_method( + comp_class, cc_full_descr->accept_port_connection_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); + if (ret) { + status = BT_PLUGIN_STATUS_ERROR; + BT_PUT(comp_class); + goto end; + } + } + switch (cc_full_descr->descriptor->type) { case BT_COMPONENT_CLASS_TYPE_SOURCE: if (cc_full_descr->iterator_methods.init) { @@ -529,10 +547,10 @@ enum bt_plugin_status bt_plugin_so_init( } } - if (cc_full_descr->iterator_methods.destroy) { - ret = bt_component_class_source_set_notification_iterator_destroy_method( + if (cc_full_descr->iterator_methods.finalize) { + ret = bt_component_class_source_set_notification_iterator_finalize_method( comp_class, - cc_full_descr->iterator_methods.destroy); + cc_full_descr->iterator_methods.finalize); if (ret) { status = BT_PLUGIN_STATUS_ERROR; BT_PUT(comp_class); @@ -552,17 +570,6 @@ enum bt_plugin_status bt_plugin_so_init( } break; case BT_COMPONENT_CLASS_TYPE_FILTER: - if (cc_full_descr->filter_add_iterator_method) { - ret = bt_component_class_filter_set_add_iterator_method( - comp_class, - cc_full_descr->filter_add_iterator_method); - if (ret) { - status = BT_PLUGIN_STATUS_ERROR; - BT_PUT(comp_class); - goto end; - } - } - if (cc_full_descr->iterator_methods.init) { ret = bt_component_class_filter_set_notification_iterator_init_method( comp_class, @@ -574,10 +581,10 @@ enum bt_plugin_status bt_plugin_so_init( } } - if (cc_full_descr->iterator_methods.destroy) { - ret = bt_component_class_filter_set_notification_iterator_destroy_method( + if (cc_full_descr->iterator_methods.finalize) { + ret = bt_component_class_filter_set_notification_iterator_finalize_method( comp_class, - cc_full_descr->iterator_methods.destroy); + cc_full_descr->iterator_methods.finalize); if (ret) { status = BT_PLUGIN_STATUS_ERROR; BT_PUT(comp_class); @@ -597,16 +604,6 @@ enum bt_plugin_status bt_plugin_so_init( } break; case BT_COMPONENT_CLASS_TYPE_SINK: - if (cc_full_descr->sink_add_iterator_method) { - ret = bt_component_class_sink_set_add_iterator_method( - comp_class, - cc_full_descr->sink_add_iterator_method); - if (ret) { - status = BT_PLUGIN_STATUS_ERROR; - BT_PUT(comp_class); - goto end; - } - } break; default: assert(false); @@ -658,6 +655,7 @@ struct bt_plugin *bt_plugin_so_create_empty( goto error; } + plugin->destroy_spec_data = bt_plugin_so_destroy_spec_data; plugin->spec_data = g_new0(struct bt_plugin_so_spec_data, 1); if (!plugin->spec_data) { goto error;