#include <babeltrace/babeltrace-internal.h>
#include <babeltrace/component/component.h>
#include <babeltrace/component/component-class-internal.h>
+#include <babeltrace/component/port-internal.h>
#include <babeltrace/object-internal.h>
#include <glib.h>
#include <stdio.h>
+#define DEFAULT_INPUT_PORT_NAME "default"
+#define DEFAULT_OUTPUT_PORT_NAME "default"
+
struct bt_component {
struct bt_object base;
struct bt_component_class *class;
GString *name;
- /**
+ /*
* Internal destroy function specific to a source, filter, or
* sink component object.
*/
bt_component_class_destroy_method destroy;
- /** User-defined data */
+ /* User-defined data */
void *user_data;
- /**
+ /*
* 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,
- bt_component_class_destroy_method destroy);
+ /* Input and output ports (weak references) */
+ GPtrArray *input_ports;
+ GPtrArray *output_ports;
+};
BT_HIDDEN
struct bt_notification_iterator *bt_component_create_iterator(
struct bt_component *component, void *init_method_data);
+BT_HIDDEN
+enum bt_component_status bt_component_accept_port_connection(
+ struct bt_component *component, struct bt_port *self_port);
+
+BT_HIDDEN
+void bt_component_port_disconnected(struct bt_component *comp,
+ struct bt_port *port);
+
+BT_HIDDEN
+void bt_component_set_graph(struct bt_component *component,
+ struct bt_graph *graph);
+
+BT_HIDDEN
+uint64_t bt_component_get_input_port_count(struct bt_component *comp);
+
+BT_HIDDEN
+uint64_t bt_component_get_output_port_count(struct bt_component *comp);
+
+BT_HIDDEN
+struct bt_port *bt_component_get_input_port_at_index(struct bt_component *comp,
+ int index);
+
+BT_HIDDEN
+struct bt_port *bt_component_get_output_port_at_index(struct bt_component *comp,
+ int index);
+
+BT_HIDDEN
+struct bt_port *bt_component_get_input_port(struct bt_component *comp,
+ const char *name);
+
+BT_HIDDEN
+struct bt_port *bt_component_get_output_port(struct bt_component *comp,
+ const char *name);
+
+BT_HIDDEN
+struct bt_port *bt_component_add_input_port(
+ struct bt_component *component, const char *name);
+
+BT_HIDDEN
+struct bt_port *bt_component_add_output_port(
+ struct bt_component *component, const char *name);
+
+BT_HIDDEN
+enum bt_component_status bt_component_remove_port(
+ struct bt_component *component, struct bt_port *port);
+
#endif /* BABELTRACE_COMPONENT_COMPONENT_INTERNAL_H */