From 584e4e7846882b88b11d94dcb248fd8f95aa6791 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Wed, 13 May 2015 16:01:07 -0400 Subject: [PATCH] Plug-in system update MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau --- include/babeltrace/plugin/plugin-internal.h | 4 ++ include/babeltrace/plugin/plugin-lib.h | 75 +++++++++++++++++++++ include/babeltrace/plugin/plugin.h | 37 +--------- include/babeltrace/plugin/source.h | 5 -- 4 files changed, 81 insertions(+), 40 deletions(-) create mode 100644 include/babeltrace/plugin/plugin-lib.h diff --git a/include/babeltrace/plugin/plugin-internal.h b/include/babeltrace/plugin/plugin-internal.h index d6bbbd3f..2a60ea12 100644 --- a/include/babeltrace/plugin/plugin-internal.h +++ b/include/babeltrace/plugin/plugin-internal.h @@ -38,6 +38,10 @@ struct bt_notification; struct bt_plugin { const char * name; enum bt_plugin_type type; + + /* Plug-in specific callbacks */ + bt_plugin_destroy_cb destroy; + bt_plugin_set_error_stream_cb set_error_stream; }; #ifdef __cplusplus diff --git a/include/babeltrace/plugin/plugin-lib.h b/include/babeltrace/plugin/plugin-lib.h new file mode 100644 index 00000000..8bafd263 --- /dev/null +++ b/include/babeltrace/plugin/plugin-lib.h @@ -0,0 +1,75 @@ +#ifndef BABELTRACE_PLUGIN_LIB_H +#define BABELTRACE_PLUGIN_LIB_H + +/* + * BabelTrace - Base interface of a Babeltrace Plug-in Library + * + * Copyright 2015 Jérémie Galarneau + * + * Author: Jérémie Galarneau + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct bt_plugin; +struct bt_notification; + +enum bt_plugin_type { + BT_PLUGIN_TYPE_UNKNOWN = -1, + /* A source plug-in is a notification generator. */ + BT_PLUGIN_TYPE_SOURCE = 0, + /* A sink plug-in handles incoming notifications. */ + BT_PLUGIN_TYPE_SINK = 1, + /* A filter plug-in implements both SOURCE and SINK interfaces. */ + BT_PLUGIN_TYPE_FILTER = 2, +}; + +/** + * Plug-in discovery functions. + * + * The Babeltrace plug-in architecture mandates that a given plug-in shared + * object only define one plug-in. These functions are used to query a plug-in + * shared object about its attributes. + * + * The functions marked as mandatory MUST be exported by the shared object + * to be considered a valid plug-in. + */ +enum bt_plugin_type bt_plugin_lib_get_type(void); +const char *bt_plugin_lib_get_format_name(void); + +/** + * Create a plug-in instance configured with the provided parameters. + * + * @param params Map object of configuration parameters + * @returns An instance of the plug-in + */ +struct bt_plugin *bt_plugin_lib_create(struct bt_object *params); + +#ifdef __cplusplus +} +#endif + +#endif /* BABELTRACE_PLUGIN_H */ diff --git a/include/babeltrace/plugin/plugin.h b/include/babeltrace/plugin/plugin.h index a8aada4e..1c3c36d0 100644 --- a/include/babeltrace/plugin/plugin.h +++ b/include/babeltrace/plugin/plugin.h @@ -2,7 +2,7 @@ #define BABELTRACE_PLUGIN_H /* - * BabelTrace - Plug-in + * BabelTrace - Babeltrace Plug-in Interface * * Copyright 2015 Jérémie Galarneau * @@ -27,44 +27,11 @@ * SOFTWARE. */ -#include - #ifdef __cplusplus extern "C" { #endif -struct bt_plugin; -struct bt_notification; - -enum bt_plugin_type { - BT_PLUGIN_TYPE_UNKNOWN = -1, - /* A source plug-in is a notification generator. */ - BT_PLUGIN_TYPE_SOURCE = 0, - /* A sink plug-in handles incoming notifications. */ - BT_PLUGIN_TYPE_SINK = 1, - /* A filter plug-in implements both SOURCE and SINK interfaces. */ - BT_PLUGIN_TYPE_FILTER = 2, -}; - -typedef void (*bt_plugin_destroy_func)(struct bt_plugin *); - -/** - * Plug-in discovery functions. - * - * The Babeltrace plug-in architecture mandates that a given plug-in shared - * object only define one plug-in. These functions are used to query a about - * shared object about its attributes. - * - * The functions marked as mandatory MUST be exported by the shared object - * to be considered a valid plug-in. - */ -/* Plug-in discovery functions... find a better name */ -enum bt_plugin_type bt_plugin_lib_get_type(void); -const char *bt_plugin_lib_get_format_name(void); -/* TODO: document mandatory fields and their expected types */ -struct bt_plugin *bt_plugin_create(struct bt_ctf_field *params); -void *bt_plugin_get_user_data(struct bt_plugin *plugin); int bt_plugin_set_error_stream(struct bt_plugin *plugin, FILE *error_stream); /* Refcounting */ @@ -75,4 +42,4 @@ void bt_plugin_put(struct bt_plugin *plugin); } #endif -#endif /* BABELTRACE_PLUGIN_H */ +#endif /* BABELTRACE_PLUGIN_SYSTEM_H */ diff --git a/include/babeltrace/plugin/source.h b/include/babeltrace/plugin/source.h index ade5cc4e..f5ff48a1 100644 --- a/include/babeltrace/plugin/source.h +++ b/include/babeltrace/plugin/source.h @@ -41,11 +41,6 @@ typedef struct bt_notification_iterator *( struct bt_notification_iterator *bt_plugin_source_get_iterator( struct bt_plugin *plugin); -/* Plug-in initialization functions */ -struct bt_plugin *bt_plugin_source_create(const char *name, void *user_data, - bt_plugin_destroy_func destroy_func, - bt_plugin_source_iterator_create_func iterator_create_func); - #ifdef __cplusplus } #endif -- 2.34.1