X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fgraph%2Fcomponent-internal.h;h=65f5e4d82bac46e1fded9cf378f7e17078d8ea7c;hb=5c5632787fc9cafa602c89a28966bcfd01ec0204;hp=4c50ffb95a9cb9657d02d6aae706e1cb5fdd2b54;hpb=b2e0c9076135f47110af2d96dfaee397c597bc90;p=babeltrace.git diff --git a/include/babeltrace/graph/component-internal.h b/include/babeltrace/graph/component-internal.h index 4c50ffb9..65f5e4d8 100644 --- a/include/babeltrace/graph/component-internal.h +++ b/include/babeltrace/graph/component-internal.h @@ -1,5 +1,5 @@ -#ifndef BABELTRACE_COMPONENT_COMPONENT_INTERNAL_H -#define BABELTRACE_COMPONENT_COMPONENT_INTERNAL_H +#ifndef BABELTRACE_GRAPH_COMPONENT_INTERNAL_H +#define BABELTRACE_GRAPH_COMPONENT_INTERNAL_H /* * BabelTrace - Component internal @@ -32,11 +32,18 @@ #include #include #include +#include +#include #include #include -#define DEFAULT_INPUT_PORT_NAME "default" -#define DEFAULT_OUTPUT_PORT_NAME "default" +typedef void (*bt_component_destroy_listener_func)( + struct bt_component *class, void *data); + +struct bt_component_destroy_listener { + bt_component_destroy_listener_func func; + void *data; +}; struct bt_component { struct bt_object base; @@ -52,23 +59,15 @@ struct bt_component { /* User-defined data */ void *user_data; - /* - * Used to protect operations which may only be used during - * a component's initialization. - */ - bool initializing; - /* Input and output ports (weak references) */ GPtrArray *input_ports; GPtrArray *output_ports; -}; -static inline -struct bt_component *bt_component_from_private( - struct bt_private_component *private_component) -{ - return (void *) private_component; -} + /* Array of struct bt_component_destroy_listener */ + GArray *destroy_listeners; + + bool initialized; +}; static inline struct bt_private_component *bt_private_component_from_component( @@ -77,11 +76,20 @@ struct bt_private_component *bt_private_component_from_component( return (void *) component; } +BT_HIDDEN +enum bt_component_status bt_component_create( + struct bt_component_class *component_class, + const char *name, struct bt_component **component); + BT_HIDDEN enum bt_component_status bt_component_accept_port_connection( struct bt_component *component, struct bt_port *self_port, struct bt_port *other_port); +BT_HIDDEN +void bt_component_port_connected(struct bt_component *comp, + struct bt_port *self_port, struct bt_port *other_port); + BT_HIDDEN void bt_component_port_disconnected(struct bt_component *comp, struct bt_port *port); @@ -91,37 +99,76 @@ 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); +int64_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); +int64_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); +struct bt_port *bt_component_get_input_port_by_index(struct bt_component *comp, + uint64_t index); BT_HIDDEN -struct bt_port *bt_component_get_output_port_at_index(struct bt_component *comp, - int index); +struct bt_port *bt_component_get_output_port_by_index(struct bt_component *comp, + uint64_t index); BT_HIDDEN -struct bt_port *bt_component_get_input_port(struct bt_component *comp, +struct bt_port *bt_component_get_input_port_by_name(struct bt_component *comp, const char *name); BT_HIDDEN -struct bt_port *bt_component_get_output_port(struct bt_component *comp, +struct bt_port *bt_component_get_output_port_by_name(struct bt_component *comp, const char *name); BT_HIDDEN struct bt_port *bt_component_add_input_port( - struct bt_component *component, const char *name); + struct bt_component *component, const char *name, + void *user_data); BT_HIDDEN struct bt_port *bt_component_add_output_port( - struct bt_component *component, const char *name); + struct bt_component *component, const char *name, + void *user_data); BT_HIDDEN enum bt_component_status bt_component_remove_port( struct bt_component *component, struct bt_port *port); -#endif /* BABELTRACE_COMPONENT_COMPONENT_INTERNAL_H */ +BT_HIDDEN +void bt_component_add_destroy_listener(struct bt_component *component, + bt_component_destroy_listener_func func, void *data); + +BT_HIDDEN +void bt_component_remove_destroy_listener(struct bt_component *component, + bt_component_destroy_listener_func func, void *data); + +static inline +const char *bt_component_status_string(enum bt_component_status status) +{ + switch (status) { + case BT_COMPONENT_STATUS_OK: + return "BT_COMPONENT_STATUS_OK"; + case BT_COMPONENT_STATUS_END: + return "BT_COMPONENT_STATUS_END"; + case BT_COMPONENT_STATUS_AGAIN: + return "BT_COMPONENT_STATUS_AGAIN"; + case BT_COMPONENT_STATUS_REFUSE_PORT_CONNECTION: + return "BT_COMPONENT_STATUS_REFUSE_PORT_CONNECTION"; + case BT_COMPONENT_STATUS_ERROR: + return "BT_COMPONENT_STATUS_ERROR"; + case BT_COMPONENT_STATUS_UNSUPPORTED: + return "BT_COMPONENT_STATUS_UNSUPPORTED"; + case BT_COMPONENT_STATUS_INVALID: + return "BT_COMPONENT_STATUS_INVALID"; + case BT_COMPONENT_STATUS_NOMEM: + return "BT_COMPONENT_STATUS_NOMEM"; + case BT_COMPONENT_STATUS_NOT_FOUND: + return "BT_COMPONENT_STATUS_NOT_FOUND"; + case BT_COMPONENT_STATUS_GRAPH_IS_CANCELED: + return "BT_COMPONENT_STATUS_GRAPH_IS_CANCELED"; + default: + return "(unknown)"; + } +} + +#endif /* BABELTRACE_GRAPH_COMPONENT_INTERNAL_H */