X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Fgraph%2Fsource.c;h=52ac8c81da502dd2725f365ed0e350d623bb0073;hb=5c5632787fc9cafa602c89a28966bcfd01ec0204;hp=57244c062584e14d978c40640ae79a015e23300a;hpb=147337a3be96c8ea69fee38099762370ecac8d51;p=babeltrace.git diff --git a/lib/graph/source.c b/lib/graph/source.c index 57244c06..52ac8c81 100644 --- a/lib/graph/source.c +++ b/lib/graph/source.c @@ -31,11 +31,13 @@ #include #include +#include #include #include #include #include #include +#include BT_HIDDEN void bt_component_source_destroy(struct bt_component *component) @@ -44,7 +46,7 @@ void bt_component_source_destroy(struct bt_component *component) BT_HIDDEN struct bt_component *bt_component_source_create( - struct bt_component_class *class, struct bt_value *params) + struct bt_component_class *class) { struct bt_component_source *source = NULL; @@ -148,7 +150,7 @@ bt_private_component_source_get_output_private_port_by_name( /* bt_component_source_get_output_port_by_name() logs details/errors */ return bt_private_port_from_port( bt_component_source_get_output_port_by_name( - bt_component_from_private(private_component), name)); + bt_component_borrow_from_private(private_component), name)); } struct bt_private_port * @@ -158,7 +160,7 @@ bt_private_component_source_get_output_private_port_by_index( /* bt_component_source_get_output_port_by_index() logs details/errors */ return bt_private_port_from_port( bt_component_source_get_output_port_by_index( - bt_component_from_private(private_component), index)); + bt_component_borrow_from_private(private_component), index)); } enum bt_component_status bt_private_component_source_add_output_private_port( @@ -169,7 +171,8 @@ enum bt_component_status bt_private_component_source_add_output_private_port( enum bt_component_status status = BT_COMPONENT_STATUS_OK; struct bt_port *port = NULL; struct bt_component *component = - bt_component_from_private(private_component); + bt_component_borrow_from_private(private_component); + struct bt_graph *graph; if (!component) { BT_LOGW_STR("Invalid parameter: component is NULL."); @@ -186,6 +189,17 @@ enum bt_component_status bt_private_component_source_add_output_private_port( goto end; } + graph = bt_component_borrow_graph(component); + + if (graph && bt_graph_is_canceled(graph)) { + BT_LOGW("Cannot add output port to source component: graph is canceled: " + "comp-addr=%p, comp-name=\"%s\", graph-addr=%p", + component, bt_component_get_name(component), + bt_component_borrow_graph(component)); + status = BT_COMPONENT_STATUS_GRAPH_IS_CANCELED; + goto end; + } + /* bt_component_add_output_port() logs details and errors */ port = bt_component_add_output_port(component, name, user_data); if (!port) {