lib: rename bt_plugin_create_all_*() -> bt_plugin_find_all_*()
[babeltrace.git] / lib / plugin / plugin-so.c
index b875ad68953598b5a2217977e96725d3e136d54f..cf0b66f1086bb877d9e2cd4c76da77cdd1d86522 100644 (file)
@@ -1,6 +1,6 @@
 /*
+ * Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
  * Copyright 2016 Jérémie Galarneau <jeremie.galarneau@efficios.com>
- * Copyright 2017 Philippe Proulx <pproulx@efficios.com>
  *
  * Author: Jérémie Galarneau <jeremie.galarneau@efficios.com>
  *
 #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/object.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/private-component-class.h>
-#include <babeltrace/graph/private-component-class-source.h>
-#include <babeltrace/graph/private-component-class-filter.h>
-#include <babeltrace/graph/private-component-class-sink.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 <babeltrace/assert-internal.h>
 #include <string.h>
 #include <stdlib.h>
 #include <glib.h>
@@ -71,7 +71,7 @@ BT_PLUGIN_MODULE();
  *
  * It allows this use-case:
  *
- *        my_plugins = bt_plugin_create_all_from_file("/path/to/my-plugin.so");
+ *        my_plugins = bt_plugin_find_all_from_file("/path/to/my-plugin.so");
  *        // instantiate components from a plugin's component classes
  *        // put plugins and free my_plugins here
  *        // user code of instantiated components still exists
@@ -148,6 +148,8 @@ void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj)
                                BT_LOGE("Cannot close GModule: %s: path=\"%s\"",
                                        g_module_error(), path);
                        }
+
+                       shared_lib_handle->module = NULL;
 #ifndef NDEBUG
                } else {
                        BT_LOGD("Not closing GModule because `BABELTRACE_NO_DLCLOSE=1`: "
@@ -158,6 +160,7 @@ void bt_plugin_so_shared_lib_handle_destroy(struct bt_object *obj)
 
        if (shared_lib_handle->path) {
                g_string_free(shared_lib_handle->path, TRUE);
+               shared_lib_handle->path = NULL;
        }
 
        g_free(shared_lib_handle);
@@ -195,7 +198,7 @@ struct bt_plugin_so_shared_lib_handle *bt_plugin_so_shared_lib_handle_create(
                 * DEBUG-level logging because we're only _trying_ to
                 * open this file as a Babeltrace plugin: if it's not,
                 * it's not an error. And because this can be tried
-                * during bt_plugin_create_all_from_dir(), it's not even
+                * during bt_plugin_find_all_from_dir(), it's not even
                 * a warning.
                 */
                BT_LOGD("Cannot open GModule: %s: path=\"%s\"",
@@ -282,37 +285,37 @@ enum bt_plugin_status bt_plugin_so_init(
 
                union {
                        struct {
-                               bt_private_component_class_source_init_method init;
-                               bt_private_component_class_source_finalize_method finalize;
-                               bt_private_component_class_source_query_method query;
-                               bt_private_component_class_source_accept_output_port_connection_method accept_output_port_connection;
-                               bt_private_component_class_source_output_port_connected_method output_port_connected;
-                               bt_private_component_class_source_output_port_disconnected_method output_port_disconnected;
-                               bt_private_component_class_source_notification_iterator_init_method notif_iter_init;
-                               bt_private_component_class_source_notification_iterator_finalize_method notif_iter_finalize;
+                               bt_component_class_source_init_method init;
+                               bt_component_class_source_finalize_method finalize;
+                               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_notification_iterator_init_method notif_iter_init;
+                               bt_component_class_source_notification_iterator_finalize_method notif_iter_finalize;
                        } source;
 
                        struct {
-                               bt_private_component_class_filter_init_method init;
-                               bt_private_component_class_filter_finalize_method finalize;
-                               bt_private_component_class_filter_query_method query;
-                               bt_private_component_class_filter_accept_input_port_connection_method accept_input_port_connection;
-                               bt_private_component_class_filter_accept_output_port_connection_method accept_output_port_connection;
-                               bt_private_component_class_filter_input_port_connected_method input_port_connected;
-                               bt_private_component_class_filter_output_port_connected_method output_port_connected;
-                               bt_private_component_class_filter_input_port_disconnected_method input_port_disconnected;
-                               bt_private_component_class_filter_output_port_disconnected_method output_port_disconnected;
-                               bt_private_component_class_filter_notification_iterator_init_method notif_iter_init;
-                               bt_private_component_class_filter_notification_iterator_finalize_method notif_iter_finalize;
+                               bt_component_class_filter_init_method init;
+                               bt_component_class_filter_finalize_method finalize;
+                               bt_component_class_filter_query_method query;
+                               bt_component_class_filter_accept_input_port_connection_method accept_input_port_connection;
+                               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_notification_iterator_init_method notif_iter_init;
+                               bt_component_class_filter_notification_iterator_finalize_method notif_iter_finalize;
                        } filter;
 
                        struct {
-                               bt_private_component_class_sink_init_method init;
-                               bt_private_component_class_sink_finalize_method finalize;
-                               bt_private_component_class_sink_query_method query;
-                               bt_private_component_class_sink_accept_input_port_connection_method accept_input_port_connection;
-                               bt_private_component_class_sink_input_port_connected_method input_port_connected;
-                               bt_private_component_class_sink_input_port_disconnected_method input_port_disconnected;
+                               bt_component_class_sink_init_method init;
+                               bt_component_class_sink_finalize_method finalize;
+                               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;
        };
@@ -688,10 +691,10 @@ enum bt_plugin_status bt_plugin_so_init(
                struct comp_class_full_descriptor *cc_full_descr =
                        &g_array_index(comp_class_full_descriptors,
                                struct comp_class_full_descriptor, i);
-               struct bt_private_component_class *comp_class = NULL;
-               struct bt_private_component_class_source *src_comp_class = NULL;
-               struct bt_private_component_class_filter *flt_comp_class = NULL;
-               struct bt_private_component_class_sink *sink_comp_class = NULL;
+               struct bt_component_class *comp_class = NULL;
+               struct bt_component_class_source *src_comp_class = NULL;
+               struct bt_component_class_filter *flt_comp_class = NULL;
+               struct bt_component_class_sink *sink_comp_class = NULL;
 
                BT_LOGD("Creating and setting properties of plugin's component class: "
                        "plugin-path=\"%s\", plugin-name=\"%s\", "
@@ -706,24 +709,24 @@ enum bt_plugin_status bt_plugin_so_init(
 
                switch (cc_full_descr->descriptor->type) {
                case BT_COMPONENT_CLASS_TYPE_SOURCE:
-                       src_comp_class = bt_private_component_class_source_create(
+                       src_comp_class = bt_component_class_source_create(
                                cc_full_descr->descriptor->name,
                                cc_full_descr->descriptor->methods.source.notif_iter_next);
-                       comp_class = bt_private_component_class_source_borrow_private_component_class(
+                       comp_class = bt_component_class_source_as_component_class(
                                src_comp_class);
                        break;
                case BT_COMPONENT_CLASS_TYPE_FILTER:
-                       flt_comp_class = bt_private_component_class_filter_create(
+                       flt_comp_class = bt_component_class_filter_create(
                                cc_full_descr->descriptor->name,
                                cc_full_descr->descriptor->methods.source.notif_iter_next);
-                       comp_class = bt_private_component_class_filter_borrow_private_component_class(
+                       comp_class = bt_component_class_filter_as_component_class(
                                flt_comp_class);
                        break;
                case BT_COMPONENT_CLASS_TYPE_SINK:
-                       sink_comp_class = bt_private_component_class_sink_create(
+                       sink_comp_class = bt_component_class_sink_create(
                                cc_full_descr->descriptor->name,
                                cc_full_descr->descriptor->methods.sink.consume);
-                       comp_class = bt_private_component_class_sink_borrow_private_component_class(
+                       comp_class = bt_component_class_sink_as_component_class(
                                sink_comp_class);
                        break;
                default:
@@ -753,7 +756,7 @@ enum bt_plugin_status bt_plugin_so_init(
                }
 
                if (cc_full_descr->description) {
-                       ret = bt_private_component_class_set_description(
+                       ret = bt_component_class_set_description(
                                comp_class, cc_full_descr->description);
                        if (ret) {
                                BT_LOGE_STR("Cannot set component class's description.");
@@ -764,7 +767,7 @@ enum bt_plugin_status bt_plugin_so_init(
                }
 
                if (cc_full_descr->help) {
-                       ret = bt_private_component_class_set_help(comp_class,
+                       ret = bt_component_class_set_help(comp_class,
                                cc_full_descr->help);
                        if (ret) {
                                BT_LOGE_STR("Cannot set component class's help string.");
@@ -777,7 +780,7 @@ enum bt_plugin_status bt_plugin_so_init(
                switch (cc_full_descr->descriptor->type) {
                case BT_COMPONENT_CLASS_TYPE_SOURCE:
                        if (cc_full_descr->methods.source.init) {
-                               ret = bt_private_component_class_source_set_init_method(
+                               ret = bt_component_class_source_set_init_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.init);
                                if (ret) {
@@ -789,7 +792,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.source.finalize) {
-                               ret = bt_private_component_class_source_set_finalize_method(
+                               ret = bt_component_class_source_set_finalize_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.finalize);
                                if (ret) {
@@ -801,7 +804,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.source.query) {
-                               ret = bt_private_component_class_source_set_query_method(
+                               ret = bt_component_class_source_set_query_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.query);
                                if (ret) {
@@ -813,7 +816,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.source.accept_output_port_connection) {
-                               ret = bt_private_component_class_source_set_accept_output_port_connection_method(
+                               ret = bt_component_class_source_set_accept_output_port_connection_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.accept_output_port_connection);
                                if (ret) {
@@ -825,7 +828,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.source.output_port_connected) {
-                               ret = bt_private_component_class_source_set_output_port_connected_method(
+                               ret = bt_component_class_source_set_output_port_connected_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.output_port_connected);
                                if (ret) {
@@ -837,7 +840,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.source.output_port_disconnected) {
-                               ret = bt_private_component_class_source_set_output_port_disconnected_method(
+                               ret = bt_component_class_source_set_output_port_disconnected_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.output_port_disconnected);
                                if (ret) {
@@ -849,7 +852,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.source.notif_iter_init) {
-                               ret = bt_private_component_class_source_set_notification_iterator_init_method(
+                               ret = bt_component_class_source_set_notification_iterator_init_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.notif_iter_init);
                                if (ret) {
@@ -861,7 +864,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.source.notif_iter_finalize) {
-                               ret = bt_private_component_class_source_set_notification_iterator_finalize_method(
+                               ret = bt_component_class_source_set_notification_iterator_finalize_method(
                                        src_comp_class,
                                        cc_full_descr->methods.source.notif_iter_finalize);
                                if (ret) {
@@ -875,7 +878,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        break;
                case BT_COMPONENT_CLASS_TYPE_FILTER:
                        if (cc_full_descr->methods.filter.init) {
-                               ret = bt_private_component_class_filter_set_init_method(
+                               ret = bt_component_class_filter_set_init_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.init);
                                if (ret) {
@@ -887,7 +890,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.finalize) {
-                               ret = bt_private_component_class_filter_set_finalize_method(
+                               ret = bt_component_class_filter_set_finalize_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.finalize);
                                if (ret) {
@@ -899,7 +902,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.query) {
-                               ret = bt_private_component_class_filter_set_query_method(
+                               ret = bt_component_class_filter_set_query_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.query);
                                if (ret) {
@@ -911,7 +914,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.accept_input_port_connection) {
-                               ret = bt_private_component_class_filter_set_accept_input_port_connection_method(
+                               ret = bt_component_class_filter_set_accept_input_port_connection_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.accept_input_port_connection);
                                if (ret) {
@@ -923,7 +926,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.accept_output_port_connection) {
-                               ret = bt_private_component_class_filter_set_accept_output_port_connection_method(
+                               ret = bt_component_class_filter_set_accept_output_port_connection_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.accept_output_port_connection);
                                if (ret) {
@@ -935,7 +938,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.input_port_connected) {
-                               ret = bt_private_component_class_filter_set_input_port_connected_method(
+                               ret = bt_component_class_filter_set_input_port_connected_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.input_port_connected);
                                if (ret) {
@@ -947,7 +950,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.output_port_connected) {
-                               ret = bt_private_component_class_filter_set_output_port_connected_method(
+                               ret = bt_component_class_filter_set_output_port_connected_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.output_port_connected);
                                if (ret) {
@@ -959,7 +962,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.input_port_disconnected) {
-                               ret = bt_private_component_class_filter_set_input_port_disconnected_method(
+                               ret = bt_component_class_filter_set_input_port_disconnected_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.input_port_disconnected);
                                if (ret) {
@@ -971,7 +974,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.output_port_disconnected) {
-                               ret = bt_private_component_class_filter_set_output_port_disconnected_method(
+                               ret = bt_component_class_filter_set_output_port_disconnected_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.output_port_disconnected);
                                if (ret) {
@@ -983,7 +986,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.notif_iter_init) {
-                               ret = bt_private_component_class_filter_set_notification_iterator_init_method(
+                               ret = bt_component_class_filter_set_notification_iterator_init_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.notif_iter_init);
                                if (ret) {
@@ -995,7 +998,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.filter.notif_iter_finalize) {
-                               ret = bt_private_component_class_filter_set_notification_iterator_finalize_method(
+                               ret = bt_component_class_filter_set_notification_iterator_finalize_method(
                                        flt_comp_class,
                                        cc_full_descr->methods.filter.notif_iter_finalize);
                                if (ret) {
@@ -1009,7 +1012,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        break;
                case BT_COMPONENT_CLASS_TYPE_SINK:
                        if (cc_full_descr->methods.sink.init) {
-                               ret = bt_private_component_class_sink_set_init_method(
+                               ret = bt_component_class_sink_set_init_method(
                                        sink_comp_class,
                                        cc_full_descr->methods.sink.init);
                                if (ret) {
@@ -1021,7 +1024,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.sink.finalize) {
-                               ret = bt_private_component_class_sink_set_finalize_method(
+                               ret = bt_component_class_sink_set_finalize_method(
                                        sink_comp_class,
                                        cc_full_descr->methods.sink.finalize);
                                if (ret) {
@@ -1033,7 +1036,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.sink.query) {
-                               ret = bt_private_component_class_sink_set_query_method(
+                               ret = bt_component_class_sink_set_query_method(
                                        sink_comp_class,
                                        cc_full_descr->methods.sink.query);
                                if (ret) {
@@ -1045,7 +1048,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.sink.accept_input_port_connection) {
-                               ret = bt_private_component_class_sink_set_accept_input_port_connection_method(
+                               ret = bt_component_class_sink_set_accept_input_port_connection_method(
                                        sink_comp_class,
                                        cc_full_descr->methods.sink.accept_input_port_connection);
                                if (ret) {
@@ -1057,7 +1060,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.sink.input_port_connected) {
-                               ret = bt_private_component_class_sink_set_input_port_connected_method(
+                               ret = bt_component_class_sink_set_input_port_connected_method(
                                        sink_comp_class,
                                        cc_full_descr->methods.sink.input_port_connected);
                                if (ret) {
@@ -1069,7 +1072,7 @@ enum bt_plugin_status bt_plugin_so_init(
                        }
 
                        if (cc_full_descr->methods.sink.input_port_disconnected) {
-                               ret = bt_private_component_class_sink_set_input_port_disconnected_method(
+                               ret = bt_component_class_sink_set_input_port_disconnected_method(
                                        sink_comp_class,
                                        cc_full_descr->methods.sink.input_port_disconnected);
                                if (ret) {
@@ -1127,7 +1130,8 @@ struct bt_plugin *bt_plugin_so_create_empty(
        }
 
        spec = plugin->spec_data;
-       spec->shared_lib_handle = bt_object_get_ref(shared_lib_handle);
+       spec->shared_lib_handle = shared_lib_handle;
+       bt_object_get_no_null_check(spec->shared_lib_handle);
        goto end;
 
 error:
@@ -1219,7 +1223,7 @@ struct bt_plugin_set *bt_plugin_so_create_all_from_sections(
                         * _trying_ to open this file as a compatible
                         * Babeltrace plugin: if it's not, it's not an
                         * error. And because this can be tried during
-                        * bt_plugin_create_all_from_dir(), it's not
+                        * bt_plugin_find_all_from_dir(), it's not
                         * even a warning.
                         */
                        BT_LOGD("Unknown ABI major version: abi-major=%d",
@@ -1246,7 +1250,7 @@ struct bt_plugin_set *bt_plugin_so_create_all_from_sections(
                         * _trying_ to open this file as a compatible
                         * Babeltrace plugin: if it's not, it's not an
                         * error. And because this can be tried during
-                        * bt_plugin_create_all_from_dir(), it's not
+                        * bt_plugin_find_all_from_dir(), it's not
                         * even a warning.
                         */
                        BT_LOGD_STR("Cannot initialize SO plugin object from sections.");
@@ -1495,7 +1499,8 @@ void bt_plugin_so_on_add_component_class(struct bt_plugin *plugin,
        BT_ASSERT(plugin->type == BT_PLUGIN_TYPE_SO);
 
        bt_list_add(&comp_class->node, &component_class_list);
-       comp_class->so_handle = bt_object_get_ref(spec->shared_lib_handle);
+       comp_class->so_handle = spec->shared_lib_handle;
+       bt_object_get_no_null_check(comp_class->so_handle);
 
        /* Add our custom destroy listener */
        bt_component_class_add_destroy_listener(comp_class,
This page took 0.045273 seconds and 4 git commands to generate.