#include <babeltrace/babeltrace-internal.h>
#include <babeltrace/plugin/plugin-system.h>
#include <babeltrace/plugin/component.h>
-#include <babeltrace/ctf-writer/ref-internal.h>
+#include <babeltrace/plugin/component-class-internal.h>
+#include <babeltrace/object-internal.h>
#include <glib.h>
#include <stdio.h>
struct bt_component {
- struct bt_ctf_ref ref_count;
+ struct bt_object base;
+ struct bt_component_class *class;
GString *name;
- enum bt_component_type type;
- /** No ownership taken */
- FILE *error_stream;
+ /** Source, Sink or Filter destroy */
+ bt_component_destroy_cb destroy;
+ /** User-defined data and its destruction callback */
void *user_data;
- bt_component_destroy_cb user_data_destroy;
- bt_component_destroy_cb destroy;
+ bt_component_destroy_cb user_destroy;
+
+ /**
+ * Used to protect operations which may only be used during
+ * a component's initialization.
+ */
+ bool initializing;
};
BT_HIDDEN
enum bt_component_status bt_component_init(struct bt_component *component,
- const char *name, void *user_data,
- bt_component_destroy_cb destroy_func,
- enum bt_component_type component_type,
- bt_component_destroy_cb component_destroy);
+ bt_component_destroy_cb destroy);
+
+BT_HIDDEN
+enum bt_component_type bt_component_get_type(struct bt_component *component);
#endif /* BABELTRACE_PLUGIN_COMPONENT_INTERNAL_H */