end:
return graph;
error:
- BT_PUT(graph);
+ BT_OBJECT_PUT_REF_AND_RESET(graph);
goto end;
}
* Notify both components that their port is connected.
*/
BT_LOGD_STR("Notifying upstream component that its port is connected.");
- bt_component_port_connected(upstream_component, upstream_port,
- downstream_port);
+ component_status = bt_component_port_connected(upstream_component,
+ upstream_port, downstream_port);
+ if (component_status != BT_COMPONENT_STATUS_OK) {
+ BT_LOGW("Error while notifying upstream component that its port is connected: "
+ "status=%s, graph-addr=%p, "
+ "upstream-comp-addr=%p, upstream-comp-name=\"%s\", "
+ "downstream-comp-addr=%p, downstream-comp-name=\"%s\", "
+ "upstream-port-addr=%p, upstream-port-name=\"%s\", "
+ "downstream-port-addr=%p, downstream-port-name=\"%s\"",
+ bt_component_status_string(component_status), graph,
+ upstream_component, bt_component_get_name(upstream_component),
+ downstream_component, bt_component_get_name(downstream_component),
+ upstream_port, bt_port_get_name(upstream_port),
+ downstream_port, bt_port_get_name(downstream_port));
+ bt_connection_end(connection, true);
+ status = bt_graph_status_from_component_status(
+ component_status);
+ goto end;
+ }
+
+ connection->notified_upstream_port_connected = true;
BT_LOGD_STR("Notifying downstream component that its port is connected.");
- bt_component_port_connected(downstream_component, downstream_port,
- upstream_port);
+ component_status = bt_component_port_connected(downstream_component,
+ downstream_port, upstream_port);
+ if (component_status != BT_COMPONENT_STATUS_OK) {
+ BT_LOGW("Error while notifying downstream component that its port is connected: "
+ "status=%s, graph-addr=%p, "
+ "upstream-comp-addr=%p, upstream-comp-name=\"%s\", "
+ "downstream-comp-addr=%p, downstream-comp-name=\"%s\", "
+ "upstream-port-addr=%p, upstream-port-name=\"%s\", "
+ "downstream-port-addr=%p, downstream-port-name=\"%s\"",
+ bt_component_status_string(component_status), graph,
+ upstream_component, bt_component_get_name(upstream_component),
+ downstream_component, bt_component_get_name(downstream_component),
+ upstream_port, bt_port_get_name(upstream_port),
+ downstream_port, bt_port_get_name(downstream_port));
+ bt_connection_end(connection, true);
+ status = bt_graph_status_from_component_status(
+ component_status);
+ goto end;
+ }
+
+ connection->notified_downstream_port_connected = true;
/*
* Notify the graph's creator that both ports are connected.
*/
BT_LOGD_STR("Notifying graph's user that new component ports are connected.");
bt_graph_notify_ports_connected(graph, upstream_port, downstream_port);
+ connection->notified_graph_ports_connected = true;
BT_LOGD("Connected component ports within graph: "
"graph-addr=%p, "
"upstream-comp-addr=%p, upstream-comp-name=\"%s\", "
}
end:
- bt_put(upstream_graph);
- bt_put(downstream_graph);
- bt_put(upstream_component);
- bt_put(downstream_component);
- bt_put(connection);
+ bt_object_put_ref(upstream_graph);
+ bt_object_put_ref(downstream_graph);
+ bt_object_put_ref(upstream_component);
+ bt_object_put_ref(downstream_component);
+ bt_object_put_ref(connection);
if (graph) {
(void) init_can_consume;
bt_graph_set_can_consume(graph, init_can_consume);
size_t i;
bt_bool init_can_consume;
- bt_get(params);
+ bt_object_get_ref(params);
if (!graph) {
BT_LOGW_STR("Invalid parameter: graph is NULL.");
}
end:
- bt_put(component);
- bt_put(params);
+ bt_object_put_ref(component);
+ bt_object_put_ref(params);
if (graph) {
graph->can_consume = init_can_consume;
}
bt_component_get_input_port_by_index(component, i);
BT_ASSERT(port);
- bt_put(port);
+ bt_object_put_ref(port);
if (bt_port_is_connected(port)) {
BT_LOGW("Cannot remove component from graph: "
bt_component_get_output_port_by_index(component, i);
BT_ASSERT(port);
- bt_put(port);
+ bt_object_put_ref(port);
if (bt_port_is_connected(port)) {
BT_LOGW("Cannot remove component from graph: "