babeltraceplugininclude_HEADERS = \
babeltrace/plugin/plugin.h \
babeltrace/plugin/component.h \
+ babeltrace/plugin/component-class.h \
babeltrace/plugin/component-factory.h \
babeltrace/plugin/source.h \
babeltrace/plugin/sink.h \
--- /dev/null
+#ifndef BABELTRACE_PLUGIN_COMPONENT_CLASS_H
+#define BABELTRACE_PLUGIN_COMPONENT_CLASS_H
+
+/*
+ * Babeltrace - Component Class Interface.
+ *
+ * Copyright 2016 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ *
+ * 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.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Component type.
+ */
+enum bt_component_type {
+ BT_COMPONENT_TYPE_UNKNOWN = -1,
+
+ /** A source component is a notification generator. */
+ BT_COMPONENT_TYPE_SOURCE = 0,
+
+ /** A sink component handles incoming notifications. */
+ BT_COMPONENT_TYPE_SINK = 1,
+
+ /** A filter component implements both Source and Sink interfaces. */
+ BT_COMPONENT_TYPE_FILTER = 2,
+};
+
+struct bt_component_class;
+
+const char *bt_component_class_get_name(
+ struct bt_component_class *component_class);
+
+enum bt_component_type bt_component_class_get_type(
+ struct bt_component_class *component_class);
+
+#endif /* BABELTRACE_PLUGIN_COMPONENT_CLASS_H */
/**
* Get the list of components registered to this factory.
+ *
+ * @param factory Component factory
*/
extern struct bt_value *bt_component_factory_get_components(
struct bt_component_factory *factory);
+/**
+ * .
+ */
+extern struct bt_value *bt_component_factory_create_component(
+ struct bt_component_factory *factory);
+
/**
* Recursively load and register Babeltrace plugins under a given path.
*
* SOFTWARE.
*/
+#include <babeltrace/plugin/component-class.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
-/**
- * Component type.
- */
-enum bt_component_type {
- BT_COMPONENT_TYPE_UNKNOWN = -1,
-
- /** A source component is a notification generator. */
- BT_COMPONENT_TYPE_SOURCE = 0,
-
- /** A sink component handles incoming notifications. */
- BT_COMPONENT_TYPE_SINK = 1,
-
- /** A filter component implements both Source and Sink interfaces. */
- BT_COMPONENT_TYPE_FILTER = 2,
-};
-
/**
* Status code. Errors are always negative.
*/
enum bt_component_status {
/** Memory allocation failure. */
- /* -12 for compatibility with -ENOMEM */
- BT_COMPONENT_STATUS_NOMEM = -12,
+ BT_COMPONENT_STATUS_NOMEM = -4,
/** Invalid arguments. */
- /* -22 for compatibility with -EINVAL */
- BT_COMPONENT_STATUS_INVAL = -22,
+ BT_COMPONENT_STATUS_INVAL = -3,
/** Unsupported component feature. */
BT_COMPONENT_STATUS_UNSUPPORTED = -2,
struct bt_component *component, const char *name);
/**
- * Get component instance type.
+ * Get component's class.
*
- * @param component Component instance of which to get the type
- * @returns One of #bt_component_type values
+ * @param component Component instance of which to get the class
+ * @returns The component's class
*/
-extern enum bt_component_type bt_component_get_type(
+extern struct bt_component_class *bt_component_get_class(
struct bt_component *component);
/**
- * Set a component instance's error stream.
+ * Set component instance's error stream.
*
* @param component Component instance
* @param error_stream Error stream