lib: fully configure graph (add components, connect ports), then run
[babeltrace.git] / lib / plugin / plugin-so.c
index f785554d6b847e2c1f69197d7a67ffb969ae5b84..94df0b3261e3322218b99bc15df7d83d9944319f 100644 (file)
@@ -102,6 +102,21 @@ void fini_comp_class_list(void)
        BT_LOGD_STR("Released references from all component classes to shared library handles.");
 }
 
+static inline
+const char *bt_self_plugin_status_string(enum bt_self_plugin_status status)
+{
+       switch (status) {
+       case BT_SELF_PLUGIN_STATUS_OK:
+               return "BT_SELF_PLUGIN_STATUS_OK";
+       case BT_SELF_PLUGIN_STATUS_ERROR:
+               return "BT_SELF_PLUGIN_STATUS_ERROR";
+       case BT_SELF_PLUGIN_STATUS_NOMEM:
+               return "BT_SELF_PLUGIN_STATUS_NOMEM";
+       default:
+               return "(unknown)";
+       }
+}
+
 static
 void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj)
 {
@@ -117,17 +132,9 @@ void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj)
                shared_lib_handle, path);
 
        if (shared_lib_handle->init_called && shared_lib_handle->exit) {
-               enum bt_plugin_status status;
-
                BT_LOGD_STR("Calling user's plugin exit function.");
-               status = shared_lib_handle->exit();
-               BT_LOGD("User function returned: %s",
-                       bt_plugin_status_string(status));
-
-               if (status < 0) {
-                       BT_LOGW("User's plugin exit function failed: "
-                               "path=\"%s\"", path);
-               }
+               shared_lib_handle->exit();
+               BT_LOGD_STR("User function returned.");
        }
 
        if (shared_lib_handle->module) {
@@ -290,7 +297,6 @@ enum bt_plugin_status bt_plugin_so_init(
                                bt_component_class_source_query_method query;
                                bt_component_class_source_accept_output_port_connection_method accept_output_port_connection;
                                bt_component_class_source_output_port_connected_method output_port_connected;
-                               bt_component_class_source_output_port_disconnected_method output_port_disconnected;
                                bt_component_class_source_message_iterator_init_method msg_iter_init;
                                bt_component_class_source_message_iterator_finalize_method msg_iter_finalize;
                        } source;
@@ -303,8 +309,6 @@ enum bt_plugin_status bt_plugin_so_init(
                                bt_component_class_filter_accept_output_port_connection_method accept_output_port_connection;
                                bt_component_class_filter_input_port_connected_method input_port_connected;
                                bt_component_class_filter_output_port_connected_method output_port_connected;
-                               bt_component_class_filter_input_port_disconnected_method input_port_disconnected;
-                               bt_component_class_filter_output_port_disconnected_method output_port_disconnected;
                                bt_component_class_filter_message_iterator_init_method msg_iter_init;
                                bt_component_class_filter_message_iterator_finalize_method msg_iter_finalize;
                        } filter;
@@ -315,7 +319,6 @@ enum bt_plugin_status bt_plugin_so_init(
                                bt_component_class_sink_query_method query;
                                bt_component_class_sink_accept_input_port_connection_method accept_input_port_connection;
                                bt_component_class_sink_input_port_connected_method input_port_connected;
-                               bt_component_class_sink_input_port_disconnected_method input_port_disconnected;
                        } sink;
                } methods;
        };
@@ -585,34 +588,6 @@ enum bt_plugin_status bt_plugin_so_init(
                                        abort();
                                }
                                break;
-                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_DISCONNECTED_METHOD:
-                               switch (cc_type) {
-                               case BT_COMPONENT_CLASS_TYPE_FILTER:
-                                       cc_full_descr->methods.filter.input_port_disconnected =
-                                               cur_cc_descr_attr->value.filter_input_port_disconnected_method;
-                                       break;
-                               case BT_COMPONENT_CLASS_TYPE_SINK:
-                                       cc_full_descr->methods.sink.input_port_disconnected =
-                                               cur_cc_descr_attr->value.sink_input_port_disconnected_method;
-                                       break;
-                               default:
-                                       abort();
-                               }
-                               break;
-                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_OUTPUT_PORT_DISCONNECTED_METHOD:
-                               switch (cc_type) {
-                               case BT_COMPONENT_CLASS_TYPE_SOURCE:
-                                       cc_full_descr->methods.source.output_port_disconnected =
-                                               cur_cc_descr_attr->value.source_output_port_disconnected_method;
-                                       break;
-                               case BT_COMPONENT_CLASS_TYPE_FILTER:
-                                       cc_full_descr->methods.filter.output_port_disconnected =
-                                               cur_cc_descr_attr->value.filter_output_port_disconnected_method;
-                                       break;
-                               default:
-                                       abort();
-                               }
-                               break;
                        case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_INIT_METHOD:
                                switch (cc_type) {
                                case BT_COMPONENT_CLASS_TYPE_SOURCE:
@@ -673,13 +648,16 @@ enum bt_plugin_status bt_plugin_so_init(
 
        /* Initialize plugin */
        if (spec->init) {
+               enum bt_self_plugin_status init_status;
+
                BT_LOGD_STR("Calling user's plugin initialization function.");
-               status = spec->init(plugin);
+               init_status = spec->init((void *) plugin);
                BT_LOGD("User function returned: %s",
-                       bt_plugin_status_string(status));
+                       bt_self_plugin_status_string(init_status));
 
-               if (status < 0) {
+               if (init_status < 0) {
                        BT_LOGW_STR("User's plugin initialization function failed.");
+                       status = BT_PLUGIN_STATUS_ERROR;
                        goto end;
                }
        }
@@ -839,18 +817,6 @@ enum bt_plugin_status bt_plugin_so_init(
                                }
                        }
 
-                       if (cc_full_descr->methods.source.output_port_disconnected) {
-                               ret = bt_component_class_source_set_output_port_disconnected_method(
-                                       src_comp_class,
-                                       cc_full_descr->methods.source.output_port_disconnected);
-                               if (ret) {
-                                       BT_LOGE_STR("Cannot set source component class's \"output port disconnected\" method.");
-                                       status = BT_PLUGIN_STATUS_ERROR;
-                                       BT_OBJECT_PUT_REF_AND_RESET(src_comp_class);
-                                       goto end;
-                               }
-                       }
-
                        if (cc_full_descr->methods.source.msg_iter_init) {
                                ret = bt_component_class_source_set_message_iterator_init_method(
                                        src_comp_class,
@@ -961,30 +927,6 @@ enum bt_plugin_status bt_plugin_so_init(
                                }
                        }
 
-                       if (cc_full_descr->methods.filter.input_port_disconnected) {
-                               ret = bt_component_class_filter_set_input_port_disconnected_method(
-                                       flt_comp_class,
-                                       cc_full_descr->methods.filter.input_port_disconnected);
-                               if (ret) {
-                                       BT_LOGE_STR("Cannot set filter component class's \"input port disconnected\" method.");
-                                       status = BT_PLUGIN_STATUS_ERROR;
-                                       BT_OBJECT_PUT_REF_AND_RESET(flt_comp_class);
-                                       goto end;
-                               }
-                       }
-
-                       if (cc_full_descr->methods.filter.output_port_disconnected) {
-                               ret = bt_component_class_filter_set_output_port_disconnected_method(
-                                       flt_comp_class,
-                                       cc_full_descr->methods.filter.output_port_disconnected);
-                               if (ret) {
-                                       BT_LOGE_STR("Cannot set filter component class's \"output port disconnected\" method.");
-                                       status = BT_PLUGIN_STATUS_ERROR;
-                                       BT_OBJECT_PUT_REF_AND_RESET(flt_comp_class);
-                                       goto end;
-                               }
-                       }
-
                        if (cc_full_descr->methods.filter.msg_iter_init) {
                                ret = bt_component_class_filter_set_message_iterator_init_method(
                                        flt_comp_class,
@@ -1071,18 +1013,6 @@ enum bt_plugin_status bt_plugin_so_init(
                                }
                        }
 
-                       if (cc_full_descr->methods.sink.input_port_disconnected) {
-                               ret = bt_component_class_sink_set_input_port_disconnected_method(
-                                       sink_comp_class,
-                                       cc_full_descr->methods.sink.input_port_disconnected);
-                               if (ret) {
-                                       BT_LOGE_STR("Cannot set sink component class's \"input port disconnected\" method.");
-                                       status = BT_PLUGIN_STATUS_ERROR;
-                                       BT_OBJECT_PUT_REF_AND_RESET(sink_comp_class);
-                                       goto end;
-                               }
-                       }
-
                        break;
                default:
                        abort();
This page took 0.026593 seconds and 4 git commands to generate.