X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fplugin%2Fplugin.h;h=1e5bf37b5e0f74b24d032b9fc5c89a0d0d820e18;hb=d3e4dcd8e7a601e0aa063455147f29fbe051582b;hp=8134074da909fc45b9062648a36df337c35bf8dc;hpb=a27aeabb58992523714699c8b2c0d1c8c0f943d3;p=babeltrace.git diff --git a/include/babeltrace/plugin/plugin.h b/include/babeltrace/plugin/plugin.h index 8134074d..1e5bf37b 100644 --- a/include/babeltrace/plugin/plugin.h +++ b/include/babeltrace/plugin/plugin.h @@ -1,10 +1,11 @@ -#ifndef BABELTRACE_PLUGIN_H -#define BABELTRACE_PLUGIN_H +#ifndef BABELTRACE_PLUGIN_PLUGIN_H +#define BABELTRACE_PLUGIN_PLUGIN_H /* * BabelTrace - Babeltrace Plug-in Interface * - * Copyright 2015 Jérémie Galarneau + * Copyright 2016 Jérémie Galarneau + * Copyright 2017 Philippe Proulx * * Author: Jérémie Galarneau * @@ -27,107 +28,88 @@ * SOFTWARE. */ -#include +#include +#include +#include #ifdef __cplusplus extern "C" { #endif -/** - * Plug-in type. - */ -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, -}; +struct bt_plugin; +struct bt_component_class; /** * Status code. Errors are always negative. */ enum bt_plugin_status { - /** Memory allocation failure. **/ - /* -12 for compatibility with -ENOMEM */ - BT_PLUGIN_STATUS_NOMEM = -12, - - /** Invalid arguments. **/ - /* -22 for compatibility with -EINVAL */ - BT_PLUGIN_STATUS_INVAL = -22, + /** No error, okay. */ + BT_PLUGIN_STATUS_OK = 0, + /** General error. */ + BT_PLUGIN_STATUS_ERROR = -1, + /** Memory allocation failure. */ + BT_PLUGIN_STATUS_NOMEM = -4, +}; - /** Unsupported plug-in feature. **/ - BT_PLUGIN_STATUS_UNSUPPORTED = -2, +extern struct bt_plugin **bt_plugin_create_all_from_file(const char *path); - /** General error. **/ - BT_PLUGIN_STATUS_ERROR = -1, +extern struct bt_plugin **bt_plugin_create_all_from_dir(const char *path, + bool recurse); - /** No error, okay. **/ - BT_PLUGIN_STATUS_OK = 0, -} +extern struct bt_plugin **bt_plugin_create_all_from_static(void); /** - * Get plug-in instance name + * Get the name of a plug-in. * - * @param plugin Plug-in instance of which to get the name - * @returns Returns a pointer to the plug-in's name + * @param plugin An instance of a plug-in + * @returns Plug-in name or NULL on error */ extern const char *bt_plugin_get_name(struct bt_plugin *plugin); /** - * Set plug-in instance name + * Get the name of a plug-in's author. * - * @param plugin Plug-in instance of which to set the name - * @param name New plug-in name (will be copied) - * @returns One of #bt_plugin_status values + * @param plugin An instance of a plug-in + * @returns Plug-in author or NULL on error */ -extern enum bt_plugin_status bt_plugin_set_name( - struct bt_plugin *plugin, const char *name); +extern const char *bt_plugin_get_author(struct bt_plugin *plugin); /** - * Get plug-in instance type + * Get the license of a plug-in. * - * @param plugin Plug-in instance of which to get the type - * @returns One of #bt_plugin_type values + * @param plugin An instance of a plug-in + * @returns Plug-in license or NULL on error */ -extern enum bt_plugin_type bt_plugin_get_type(struct bt_plugin *plugin); +extern const char *bt_plugin_get_license(struct bt_plugin *plugin); /** - * Set a plug-in instance's error stream + * Get the decription of a plug-in. * - * @param plugin Plug-in instance - * @param error_stream Error stream - * @returns One of #bt_plugin_status values + * @param plugin An instance of a plug-in + * @returns Plug-in description or NULL if none is available */ -extern enum bt_plugin_status bt_plugin_set_error_stream( - struct bt_plugin *plugin, FILE *error_stream); +extern const char *bt_plugin_get_description(struct bt_plugin *plugin); /** - * Increments the reference count of \p plugin. + * Get the path of a plug-in. * - * @param plugin Plug-in of which to increment the reference count - * - * @see bt_plugin_put() + * @param plugin An instance of a plug-in + * @returns Plug-in path or NULL on error */ -extern void bt_plugin_get(struct bt_plugin *plugin); +extern const char *bt_plugin_get_path(struct bt_plugin *plugin); -/** - * Decrements the reference count of \p plugin, destroying it when this - * count reaches 0. - * - * @param plugin Plug-in of which to decrement the reference count - * - * @see bt_plugin_get() - */ -extern void bt_plugin_put(struct bt_plugin *plugin); +extern int bt_plugin_get_component_class_count(struct bt_plugin *plugin); + +extern struct bt_component_class *bt_plugin_get_component_class( + struct bt_plugin *plugin, size_t index); + +extern +struct bt_component_class *bt_plugin_get_component_class_by_name_and_type( + struct bt_plugin *plugin, const char *name, + enum bt_component_class_type type); #ifdef __cplusplus } #endif -#endif /* BABELTRACE_PLUGIN_H */ +#endif /* BABELTRACE_PLUGIN_PLUGIN_H */