SO plugin API: add comp. class query info method macro and use it
[babeltrace.git] / lib / plugin / plugin-so.c
index 9a2a7cc8cd3c7bdb0cda81d335daba13b38825a0..a772ea404284b8d2d3f64f9be535c11bb13758b7 100644 (file)
@@ -252,6 +252,7 @@ enum bt_plugin_status bt_plugin_so_init(
                const char *help;
                bt_component_class_init_method init_method;
                bt_component_class_destroy_method destroy_method;
+               bt_component_class_query_info_method query_info_method;
                bt_component_class_filter_add_iterator_method filter_add_iterator_method;
                bt_component_class_sink_add_iterator_method sink_add_iterator_method;
                struct bt_component_class_iterator_methods iterator_methods;
@@ -378,6 +379,10 @@ enum bt_plugin_status bt_plugin_so_init(
                                        cc_full_descr->destroy_method =
                                                cur_cc_descr_attr->value.destroy_method;
                                        break;
+                               case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_QUERY_INFO_METHOD:
+                                       cc_full_descr->query_info_method =
+                                               cur_cc_descr_attr->value.query_info_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;
@@ -501,6 +506,16 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
                }
 
+               if (cc_full_descr->query_info_method) {
+                       ret = bt_component_class_set_query_info_method(
+                               comp_class, cc_full_descr->query_info_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) {
This page took 0.023543 seconds and 4 git commands to generate.