X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fplugin%2Fplugin-internal.h;h=75343239563a4b4bb51ab250ad2e0c300c435f63;hb=7c7c0433f4507935fbe2adab29d942df22ee8168;hp=3fc85c858c90b905e5a40531960cfb4308f729b1;hpb=633edee06e8dea4a4a2ba34a175d974f8b90726d;p=babeltrace.git diff --git a/include/babeltrace/plugin/plugin-internal.h b/include/babeltrace/plugin/plugin-internal.h index 3fc85c85..75343239 100644 --- a/include/babeltrace/plugin/plugin-internal.h +++ b/include/babeltrace/plugin/plugin-internal.h @@ -1,8 +1,8 @@ -#ifndef BABELTRACE_PLUGIN_COMPONENT_INTERNAL_H -#define BABELTRACE_PLUGIN_COMPONENT_INTERNAL_H +#ifndef BABELTRACE_PLUGIN_INTERNAL_H +#define BABELTRACE_PLUGIN_INTERNAL_H /* - * BabelTrace - Component internal + * BabelTrace - Plug-in Internal * * Copyright 2015 Jérémie Galarneau * @@ -28,40 +28,39 @@ */ #include -#include +#include #include #include -#include -#include -#include +#include +#include -#ifdef __cplusplus -extern "C" { -#endif - -struct bt_notification; - -struct bt_component { - struct bt_ctf_ref ref_count; - GString *name; - enum bt_plugin_type type; - /** No ownership taken */ - FILE *error_stream; - - void *user_data; - bt_plugin_destroy_cb user_data_destroy; - bt_plugin_destroy_cb destroy; +/** + * Plug-ins are owned by bt_component_factory and the bt_component_class-es + * it provides. This means that its lifetime bound by either the component + * factory's, or the concrete components' lifetime which may be in use and which + * have hold a reference to their bt_component_class which, in turn, have a + * reference to their plugin. + * + * This ensures that a plugin's library is not closed while it is being used + * even if the bt_component_factory, which created its components, is destroyed. + */ +struct bt_plugin { + struct bt_object base; + const char *name; + const char *author; + const char *license; + const char *description; + GString *path; + bt_plugin_init_func init; + bt_plugin_exit_func exit; + GModule *module; }; BT_HIDDEN -enum bt_component_status bt_component_init(struct bt_component *plugin, - const char *name, void *user_data, - bt_component_destroy_cb destroy_func, - enum bt_component_type component_type, - bt_component_destroy_cb component_destroy); +struct bt_plugin *bt_plugin_create(GModule *module, const char *path); -#ifdef __cplusplus -} -#endif +BT_HIDDEN +enum bt_component_status bt_plugin_register_component_classes( + struct bt_plugin *plugin, struct bt_component_factory *factory); -#endif /* BABELTRACE_PLUGIN_COMPONENT_INTERNAL_H */ +#endif /* BABELTRACE_PLUGIN_INTERNAL_H */