lib: rename include dir to babeltrace2
[babeltrace.git] / lib / plugin / plugin-so.c
index a535d9d877ec98cbe844992173f9492d7036e78f..ec69646f99fd38f3bb4c4bc20472698aa0aebe18 100644 (file)
  */
 
 #define BT_LOG_TAG "PLUGIN-SO"
-#include <babeltrace/lib-logging-internal.h>
-
-#include <babeltrace/assert-internal.h>
-#include <babeltrace/assert-pre-internal.h>
-#include <babeltrace/compiler-internal.h>
-#include <babeltrace/plugin/plugin-internal.h>
-#include <babeltrace/plugin/plugin-so-internal.h>
-#include <babeltrace/plugin/plugin-dev.h>
-#include <babeltrace/plugin/plugin-internal.h>
-#include <babeltrace/graph/component-class-internal.h>
-#include <babeltrace/graph/component-class.h>
-#include <babeltrace/graph/component-class-source.h>
-#include <babeltrace/graph/component-class-filter.h>
-#include <babeltrace/graph/component-class-sink.h>
-#include <babeltrace/types.h>
-#include <babeltrace/list-internal.h>
+#include <babeltrace2/lib-logging-internal.h>
+
+#include <babeltrace2/assert-internal.h>
+#include <babeltrace2/assert-pre-internal.h>
+#include <babeltrace2/compiler-internal.h>
+#include <babeltrace2/plugin/plugin-internal.h>
+#include <babeltrace2/plugin/plugin-so-internal.h>
+#include <babeltrace2/plugin/plugin-dev.h>
+#include <babeltrace2/plugin/plugin-internal.h>
+#include <babeltrace2/graph/component-class-internal.h>
+#include <babeltrace2/graph/component-class.h>
+#include <babeltrace2/graph/component-class-source.h>
+#include <babeltrace2/graph/component-class-filter.h>
+#include <babeltrace2/graph/component-class-sink.h>
+#include <babeltrace2/types.h>
+#include <babeltrace2/list-internal.h>
 #include <string.h>
 #include <stdlib.h>
 #include <glib.h>
@@ -103,15 +103,15 @@ void fini_comp_class_list(void)
 }
 
 static inline
-const char *bt_plugin_init_status_string(enum bt_plugin_init_status status)
+const char *bt_self_plugin_status_string(enum bt_self_plugin_status status)
 {
        switch (status) {
-       case BT_PLUGIN_INIT_STATUS_OK:
-               return "BT_PLUGIN_INIT_STATUS_OK";
-       case BT_PLUGIN_INIT_STATUS_ERROR:
-               return "BT_PLUGIN_INIT_STATUS_ERROR";
-       case BT_PLUGIN_INIT_STATUS_NOMEM:
-               return "BT_PLUGIN_INIT_STATUS_NOMEM";
+       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)";
        }
@@ -297,9 +297,12 @@ 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;
+                               bt_component_class_source_message_iterator_seek_ns_from_origin_method msg_iter_seek_ns_from_origin;
+                               bt_component_class_source_message_iterator_seek_beginning_method msg_iter_seek_beginning;
+                               bt_component_class_source_message_iterator_can_seek_ns_from_origin_method msg_iter_can_seek_ns_from_origin;
+                               bt_component_class_source_message_iterator_can_seek_beginning_method msg_iter_can_seek_beginning;
                        } source;
 
                        struct {
@@ -310,10 +313,12 @@ 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;
+                               bt_component_class_filter_message_iterator_seek_ns_from_origin_method msg_iter_seek_ns_from_origin;
+                               bt_component_class_filter_message_iterator_seek_beginning_method msg_iter_seek_beginning;
+                               bt_component_class_filter_message_iterator_can_seek_ns_from_origin_method msg_iter_can_seek_ns_from_origin;
+                               bt_component_class_filter_message_iterator_can_seek_beginning_method msg_iter_can_seek_beginning;
                        } filter;
 
                        struct {
@@ -322,7 +327,7 @@ 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;
+                               bt_component_class_sink_graph_is_configured_method graph_is_configured;
                        } sink;
                } methods;
        };
@@ -592,29 +597,11 @@ enum bt_plugin_status bt_plugin_so_init(
                                        abort();
                                }
                                break;
-                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_INPUT_PORT_DISCONNECTED_METHOD:
+                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_GRAPH_IS_CONFIGURED_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;
+                                       cc_full_descr->methods.sink.graph_is_configured =
+                                               cur_cc_descr_attr->value.sink_graph_is_configured_method;
                                        break;
                                default:
                                        abort();
@@ -648,6 +635,62 @@ enum bt_plugin_status bt_plugin_so_init(
                                        abort();
                                }
                                break;
+                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_NS_FROM_ORIGIN_METHOD:
+                               switch (cc_type) {
+                               case BT_COMPONENT_CLASS_TYPE_SOURCE:
+                                       cc_full_descr->methods.source.msg_iter_seek_ns_from_origin =
+                                               cur_cc_descr_attr->value.source_msg_iter_seek_ns_from_origin_method;
+                                       break;
+                               case BT_COMPONENT_CLASS_TYPE_FILTER:
+                                       cc_full_descr->methods.filter.msg_iter_seek_ns_from_origin =
+                                               cur_cc_descr_attr->value.filter_msg_iter_seek_ns_from_origin_method;
+                                       break;
+                               default:
+                                       abort();
+                               }
+                               break;
+                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_SEEK_BEGINNING_METHOD:
+                               switch (cc_type) {
+                               case BT_COMPONENT_CLASS_TYPE_SOURCE:
+                                       cc_full_descr->methods.source.msg_iter_seek_beginning =
+                                               cur_cc_descr_attr->value.source_msg_iter_seek_beginning_method;
+                                       break;
+                               case BT_COMPONENT_CLASS_TYPE_FILTER:
+                                       cc_full_descr->methods.filter.msg_iter_seek_beginning =
+                                               cur_cc_descr_attr->value.filter_msg_iter_seek_beginning_method;
+                                       break;
+                               default:
+                                       abort();
+                               }
+                               break;
+                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_NS_FROM_ORIGIN_METHOD:
+                               switch (cc_type) {
+                               case BT_COMPONENT_CLASS_TYPE_SOURCE:
+                                       cc_full_descr->methods.source.msg_iter_can_seek_ns_from_origin =
+                                               cur_cc_descr_attr->value.source_msg_iter_can_seek_ns_from_origin_method;
+                                       break;
+                               case BT_COMPONENT_CLASS_TYPE_FILTER:
+                                       cc_full_descr->methods.filter.msg_iter_can_seek_ns_from_origin =
+                                               cur_cc_descr_attr->value.filter_msg_iter_can_seek_ns_from_origin_method;
+                                       break;
+                               default:
+                                       abort();
+                               }
+                               break;
+                       case BT_PLUGIN_COMPONENT_CLASS_DESCRIPTOR_ATTRIBUTE_TYPE_MSG_ITER_CAN_SEEK_BEGINNING_METHOD:
+                               switch (cc_type) {
+                               case BT_COMPONENT_CLASS_TYPE_SOURCE:
+                                       cc_full_descr->methods.source.msg_iter_can_seek_beginning =
+                                               cur_cc_descr_attr->value.source_msg_iter_can_seek_beginning_method;
+                                       break;
+                               case BT_COMPONENT_CLASS_TYPE_FILTER:
+                                       cc_full_descr->methods.filter.msg_iter_can_seek_beginning =
+                                               cur_cc_descr_attr->value.filter_msg_iter_can_seek_beginning_method;
+                                       break;
+                               default:
+                                       abort();
+                               }
+                               break;
                        default:
                                /*
                                 * WARN-level logging because this
@@ -680,11 +723,12 @@ enum bt_plugin_status bt_plugin_so_init(
 
        /* Initialize plugin */
        if (spec->init) {
-               enum bt_plugin_init_status init_status;
+               enum bt_self_plugin_status init_status;
+
                BT_LOGD_STR("Calling user's plugin initialization function.");
-               init_status = spec->init(plugin);
+               init_status = spec->init((void *) plugin);
                BT_LOGD("User function returned: %s",
-                       bt_plugin_init_status_string(init_status));
+                       bt_self_plugin_status_string(init_status));
 
                if (init_status < 0) {
                        BT_LOGW_STR("User's plugin initialization function failed.");
@@ -848,18 +892,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,
@@ -884,6 +916,54 @@ enum bt_plugin_status bt_plugin_so_init(
                                }
                        }
 
+                       if (cc_full_descr->methods.source.msg_iter_seek_ns_from_origin) {
+                               ret = bt_component_class_source_set_message_iterator_seek_ns_from_origin_method(
+                                       src_comp_class,
+                                       cc_full_descr->methods.source.msg_iter_seek_ns_from_origin);
+                               if (ret) {
+                                       BT_LOGE_STR("Cannot set source component class's message iterator \"seek nanoseconds from origin\" 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_seek_beginning) {
+                               ret = bt_component_class_source_set_message_iterator_seek_beginning_method(
+                                       src_comp_class,
+                                       cc_full_descr->methods.source.msg_iter_seek_beginning);
+                               if (ret) {
+                                       BT_LOGE_STR("Cannot set source component class's message iterator \"seek beginning\" 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_can_seek_ns_from_origin) {
+                               ret = bt_component_class_source_set_message_iterator_can_seek_ns_from_origin_method(
+                                       src_comp_class,
+                                       cc_full_descr->methods.source.msg_iter_can_seek_ns_from_origin);
+                               if (ret) {
+                                       BT_LOGE_STR("Cannot set source component class's message iterator \"can seek nanoseconds from origin\" 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_can_seek_beginning) {
+                               ret = bt_component_class_source_set_message_iterator_can_seek_beginning_method(
+                                       src_comp_class,
+                                       cc_full_descr->methods.source.msg_iter_can_seek_beginning);
+                               if (ret) {
+                                       BT_LOGE_STR("Cannot set source component class's message iterator \"can seek beginning\" method.");
+                                       status = BT_PLUGIN_STATUS_ERROR;
+                                       BT_OBJECT_PUT_REF_AND_RESET(src_comp_class);
+                                       goto end;
+                               }
+                       }
+
                        break;
                case BT_COMPONENT_CLASS_TYPE_FILTER:
                        if (cc_full_descr->methods.filter.init) {
@@ -970,48 +1050,72 @@ 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(
+                       if (cc_full_descr->methods.filter.msg_iter_init) {
+                               ret = bt_component_class_filter_set_message_iterator_init_method(
+                                       flt_comp_class,
+                                       cc_full_descr->methods.filter.msg_iter_init);
+                               if (ret) {
+                                       BT_LOGE_STR("Cannot set filter component class's message iterator initialization 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_finalize) {
+                               ret = bt_component_class_filter_set_message_iterator_finalize_method(
                                        flt_comp_class,
-                                       cc_full_descr->methods.filter.input_port_disconnected);
+                                       cc_full_descr->methods.filter.msg_iter_finalize);
                                if (ret) {
-                                       BT_LOGE_STR("Cannot set filter component class's \"input port disconnected\" method.");
+                                       BT_LOGE_STR("Cannot set filter component class's message iterator finalization 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(
+                       if (cc_full_descr->methods.filter.msg_iter_seek_ns_from_origin) {
+                               ret = bt_component_class_filter_set_message_iterator_seek_ns_from_origin_method(
                                        flt_comp_class,
-                                       cc_full_descr->methods.filter.output_port_disconnected);
+                                       cc_full_descr->methods.filter.msg_iter_seek_ns_from_origin);
                                if (ret) {
-                                       BT_LOGE_STR("Cannot set filter component class's \"output port disconnected\" method.");
+                                       BT_LOGE_STR("Cannot set filter component class's message iterator \"seek nanoseconds from origin\" 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(
+                       if (cc_full_descr->methods.filter.msg_iter_seek_beginning) {
+                               ret = bt_component_class_filter_set_message_iterator_seek_beginning_method(
                                        flt_comp_class,
-                                       cc_full_descr->methods.filter.msg_iter_init);
+                                       cc_full_descr->methods.filter.msg_iter_seek_beginning);
                                if (ret) {
-                                       BT_LOGE_STR("Cannot set filter component class's message iterator initialization method.");
+                                       BT_LOGE_STR("Cannot set filter component class's message iterator \"seek beginning\" 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_finalize) {
-                               ret = bt_component_class_filter_set_message_iterator_finalize_method(
+                       if (cc_full_descr->methods.filter.msg_iter_can_seek_ns_from_origin) {
+                               ret = bt_component_class_filter_set_message_iterator_can_seek_ns_from_origin_method(
                                        flt_comp_class,
-                                       cc_full_descr->methods.filter.msg_iter_finalize);
+                                       cc_full_descr->methods.filter.msg_iter_can_seek_ns_from_origin);
                                if (ret) {
-                                       BT_LOGE_STR("Cannot set filter component class's message iterator finalization method.");
+                                       BT_LOGE_STR("Cannot set filter component class's message iterator \"can seek nanoseconds from origin\" 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_can_seek_beginning) {
+                               ret = bt_component_class_filter_set_message_iterator_can_seek_beginning_method(
+                                       flt_comp_class,
+                                       cc_full_descr->methods.filter.msg_iter_can_seek_beginning);
+                               if (ret) {
+                                       BT_LOGE_STR("Cannot set filter component class's message iterator \"can seek beginning\" method.");
                                        status = BT_PLUGIN_STATUS_ERROR;
                                        BT_OBJECT_PUT_REF_AND_RESET(flt_comp_class);
                                        goto end;
@@ -1080,12 +1184,12 @@ 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(
+                       if (cc_full_descr->methods.sink.graph_is_configured) {
+                               ret = bt_component_class_sink_set_graph_is_configured_method(
                                        sink_comp_class,
-                                       cc_full_descr->methods.sink.input_port_disconnected);
+                                       cc_full_descr->methods.sink.graph_is_configured);
                                if (ret) {
-                                       BT_LOGE_STR("Cannot set sink component class's \"input port disconnected\" method.");
+                                       BT_LOGE_STR("Cannot set sink component class's \"graph is configured\" method.");
                                        status = BT_PLUGIN_STATUS_ERROR;
                                        BT_OBJECT_PUT_REF_AND_RESET(sink_comp_class);
                                        goto end;
@@ -1498,7 +1602,6 @@ void plugin_comp_class_destroy_listener(struct bt_component_class *comp_class,
                "comp-cls-addr=%p", comp_class);
 }
 
-BT_HIDDEN
 void bt_plugin_so_on_add_component_class(struct bt_plugin *plugin,
                struct bt_component_class *comp_class)
 {
This page took 0.029444 seconds and 4 git commands to generate.