Rename `init` methods to `initialize`
[babeltrace.git] / src / lib / graph / graph.c
index 192ec9e59489e01e5c61bdacbb05609224e4aa39..591b65d2036feb94a4ec8cd7891d6e507947cfbf 100644 (file)
@@ -42,6 +42,7 @@
 #include <unistd.h>
 #include <glib.h>
 
+#include "component-class-sink-simple.h"
 #include "component.h"
 #include "component-sink.h"
 #include "connection.h"
@@ -57,8 +58,8 @@ typedef enum bt_graph_listener_func_status
 (*ports_connected_func_t)(const void *, const void *, const void *,
                const void *, void *);
 
-typedef enum bt_component_class_init_method_status
-(*comp_init_method_t)(const void *, const void *, void *);
+typedef enum bt_component_class_initialize_method_status
+(*comp_init_method_t)(const void *, void *, const void *, void *);
 
 struct bt_graph_listener {
        bt_graph_listener_removed_func removed;
@@ -261,11 +262,15 @@ void notify_message_graph_is_destroyed(struct bt_message *msg)
        bt_message_unlink_graph(msg);
 }
 
-struct bt_graph *bt_graph_create(void)
+struct bt_graph *bt_graph_create(uint64_t mip_version)
 {
        struct bt_graph *graph;
        int ret;
 
+       BT_ASSERT_PRE(mip_version <= bt_get_maximal_mip_version(),
+               "Unknown MIP version: mip-version=%" PRIu64 ", "
+               "max-mip-version=%" PRIu64,
+               mip_version, bt_get_maximal_mip_version());
        BT_LOGI_STR("Creating graph object.");
        graph = g_new0(struct bt_graph, 1);
        if (!graph) {
@@ -274,6 +279,7 @@ struct bt_graph *bt_graph_create(void)
        }
 
        bt_object_init_shared(&graph->base, destroy_graph);
+       graph->mip_version = mip_version;
        graph->connections = g_ptr_array_new_with_free_func(
                (GDestroyNotify) bt_object_try_spec_release);
        if (!graph->connections) {
@@ -700,9 +706,9 @@ end:
        return status;
 }
 
-enum bt_graph_consume_status bt_graph_consume(struct bt_graph *graph)
+enum bt_graph_run_once_status bt_graph_run_once(struct bt_graph *graph)
 {
-       enum bt_graph_consume_status status;
+       enum bt_graph_run_once_status status;
 
        BT_ASSERT_PRE_DEV_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_DEV(graph->can_consume,
@@ -791,7 +797,7 @@ bt_graph_add_source_component_output_port_added_listener(
                struct bt_graph *graph,
                bt_graph_source_component_output_port_added_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_port_added listener = {
                .base = {
@@ -800,7 +806,7 @@ bt_graph_add_source_component_output_port_added_listener(
                },
                .func = (port_added_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -826,7 +832,7 @@ bt_graph_add_filter_component_output_port_added_listener(
                struct bt_graph *graph,
                bt_graph_filter_component_output_port_added_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_port_added listener = {
                .base = {
@@ -835,7 +841,7 @@ bt_graph_add_filter_component_output_port_added_listener(
                },
                .func = (port_added_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -861,7 +867,7 @@ bt_graph_add_filter_component_input_port_added_listener(
                struct bt_graph *graph,
                bt_graph_filter_component_input_port_added_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_port_added listener = {
                .base = {
@@ -870,7 +876,7 @@ bt_graph_add_filter_component_input_port_added_listener(
                },
                .func = (port_added_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -896,7 +902,7 @@ bt_graph_add_sink_component_input_port_added_listener(
                struct bt_graph *graph,
                bt_graph_sink_component_input_port_added_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_port_added listener = {
                .base = {
@@ -905,7 +911,7 @@ bt_graph_add_sink_component_input_port_added_listener(
                },
                .func = (port_added_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -931,7 +937,7 @@ bt_graph_add_source_filter_component_ports_connected_listener(
                struct bt_graph *graph,
                bt_graph_source_filter_component_ports_connected_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_ports_connected listener = {
                .base = {
@@ -940,7 +946,7 @@ bt_graph_add_source_filter_component_ports_connected_listener(
                },
                .func = (ports_connected_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -967,7 +973,7 @@ bt_graph_add_source_sink_component_ports_connected_listener(
                struct bt_graph *graph,
                bt_graph_source_sink_component_ports_connected_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_ports_connected listener = {
                .base = {
@@ -976,7 +982,7 @@ bt_graph_add_source_sink_component_ports_connected_listener(
                },
                .func = (ports_connected_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -1003,7 +1009,7 @@ bt_graph_add_filter_filter_component_ports_connected_listener(
                struct bt_graph *graph,
                bt_graph_filter_filter_component_ports_connected_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_ports_connected listener = {
                .base = {
@@ -1012,7 +1018,7 @@ bt_graph_add_filter_filter_component_ports_connected_listener(
                },
                .func = (ports_connected_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -1039,7 +1045,7 @@ bt_graph_add_filter_sink_component_ports_connected_listener(
                struct bt_graph *graph,
                bt_graph_filter_sink_component_ports_connected_listener_func func,
                bt_graph_listener_removed_func listener_removed, void *data,
-               int *out_listener_id)
+               bt_listener_id *out_listener_id)
 {
        struct bt_graph_listener_ports_connected listener = {
                .base = {
@@ -1048,7 +1054,7 @@ bt_graph_add_filter_sink_component_ports_connected_listener(
                },
                .func = (ports_connected_func_t) func,
        };
-       int listener_id;
+       bt_listener_id listener_id;
 
        BT_ASSERT_PRE_NON_NULL(graph, "Graph");
        BT_ASSERT_PRE_NON_NULL(func, "Listener");
@@ -1265,10 +1271,10 @@ int add_component_with_init_method_data(
                comp_init_method_t init_method,
                const char *name, const struct bt_value *params,
                void *init_method_data, bt_logging_level log_level,
-               struct bt_component **user_component)
+               const struct bt_component **user_component)
 {
        int status = BT_FUNC_STATUS_OK;
-       enum bt_component_class_init_method_status init_status;
+       enum bt_component_class_initialize_method_status init_status;
        struct bt_component *component = NULL;
        int ret;
        bool init_can_consume;
@@ -1324,8 +1330,12 @@ int add_component_with_init_method_data(
        bt_value_freeze(params);
 
        if (init_method) {
+               /*
+                * There is no use for config objects right now, so just pass
+                * NULL.
+                */
                BT_LOGD_STR("Calling user's initialization method.");
-               init_status = init_method(component, params, init_method_data);
+               init_status = init_method(component, NULL, params, init_method_data);
                BT_LOGD("User method returned: status=%s",
                        bt_common_func_status_string(init_status));
                if (init_status != BT_FUNC_STATUS_OK) {
@@ -1352,7 +1362,8 @@ int add_component_with_init_method_data(
 
        /*
         * If it's a sink component, it needs to be part of the graph's
-        * sink queue to be consumed by bt_graph_consume().
+        * sink queue to be consumed by bt_graph_run() or
+        * bt_graph_run_once().
         */
        if (bt_component_is_sink(component)) {
                graph->has_sink = true;
@@ -1391,7 +1402,7 @@ end:
 }
 
 enum bt_graph_add_component_status
-bt_graph_add_source_component_with_init_method_data(
+bt_graph_add_source_component_with_initialize_method_data(
                struct bt_graph *graph,
                const struct bt_component_class_source *comp_cls,
                const char *name, const struct bt_value *params,
@@ -1408,19 +1419,19 @@ enum bt_graph_add_component_status bt_graph_add_source_component(
                struct bt_graph *graph,
                const struct bt_component_class_source *comp_cls,
                const char *name, const struct bt_value *params,
-               bt_logging_level log_level,
+               enum bt_logging_level log_level,
                const struct bt_component_source **component)
 {
-       return bt_graph_add_source_component_with_init_method_data(
+       return bt_graph_add_source_component_with_initialize_method_data(
                graph, comp_cls, name, params, NULL, log_level, component);
 }
 
 enum bt_graph_add_component_status
-bt_graph_add_filter_component_with_init_method_data(
+bt_graph_add_filter_component_with_initialize_method_data(
                struct bt_graph *graph,
                const struct bt_component_class_filter *comp_cls,
                const char *name, const struct bt_value *params,
-               void *init_method_data, bt_logging_level log_level,
+               void *init_method_data, enum bt_logging_level log_level,
                const struct bt_component_filter **component)
 {
        BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
@@ -1433,19 +1444,19 @@ enum bt_graph_add_component_status bt_graph_add_filter_component(
                struct bt_graph *graph,
                const struct bt_component_class_filter *comp_cls,
                const char *name, const struct bt_value *params,
-               bt_logging_level log_level,
+               enum bt_logging_level log_level,
                const struct bt_component_filter **component)
 {
-       return bt_graph_add_filter_component_with_init_method_data(
+       return bt_graph_add_filter_component_with_initialize_method_data(
                graph, comp_cls, name, params, NULL, log_level, component);
 }
 
 enum bt_graph_add_component_status
-bt_graph_add_sink_component_with_init_method_data(
+bt_graph_add_sink_component_with_initialize_method_data(
                struct bt_graph *graph,
                const struct bt_component_class_sink *comp_cls,
                const char *name, const struct bt_value *params,
-               void *init_method_data, bt_logging_level log_level,
+               void *init_method_data, enum bt_logging_level log_level,
                const struct bt_component_sink **component)
 {
        BT_ASSERT_PRE_NON_NULL(comp_cls, "Component class");
@@ -1458,13 +1469,51 @@ enum bt_graph_add_component_status bt_graph_add_sink_component(
                struct bt_graph *graph,
                const struct bt_component_class_sink *comp_cls,
                const char *name, const struct bt_value *params,
-               bt_logging_level log_level,
+               enum bt_logging_level log_level,
                const struct bt_component_sink **component)
 {
-       return bt_graph_add_sink_component_with_init_method_data(
+       return bt_graph_add_sink_component_with_initialize_method_data(
                graph, comp_cls, name, params, NULL, log_level, component);
 }
 
+enum bt_graph_add_component_status
+bt_graph_add_simple_sink_component(struct bt_graph *graph, const char *name,
+               bt_graph_simple_sink_component_initialize_func init_func,
+               bt_graph_simple_sink_component_consume_func consume_func,
+               bt_graph_simple_sink_component_finalize_func finalize_func,
+               void *user_data, const bt_component_sink **component)
+{
+       enum bt_graph_add_component_status status;
+       struct bt_component_class_sink *comp_cls;
+       struct simple_sink_init_method_data init_method_data = {
+               .init_func = init_func,
+               .consume_func = consume_func,
+               .finalize_func = finalize_func,
+               .user_data = user_data,
+       };
+
+       /*
+        * Other preconditions are checked by
+        * bt_graph_add_sink_component_with_init_method_data().
+        */
+       BT_ASSERT_PRE_NON_NULL(consume_func, "Consume function");
+
+       comp_cls = bt_component_class_sink_simple_borrow();
+       if (!comp_cls) {
+               BT_LIB_LOGE_APPEND_CAUSE(
+                       "Cannot borrow simple sink component class.");
+               status = BT_FUNC_STATUS_MEMORY_ERROR;
+               goto end;
+       }
+
+       status = bt_graph_add_sink_component_with_initialize_method_data(graph,
+               comp_cls, name, NULL, &init_method_data,
+               BT_LOGGING_LEVEL_NONE, component);
+
+end:
+       return status;
+}
+
 BT_HIDDEN
 int bt_graph_remove_unconnected_component(struct bt_graph *graph,
                struct bt_component *component)
This page took 0.035423 seconds and 4 git commands to generate.