* SOFTWARE.
*/
-#include <babeltrace/component/notification/iterator-internal.h>
-#include <babeltrace/component/component-internal.h>
-#include <babeltrace/component/component-source-internal.h>
-#include <babeltrace/component/component-filter-internal.h>
-#include <babeltrace/component/connection-internal.h>
-#include <babeltrace/component/private-connection.h>
-#include <babeltrace/component/graph-internal.h>
-#include <babeltrace/component/port-internal.h>
+#include <babeltrace/graph/notification-iterator-internal.h>
+#include <babeltrace/graph/component-internal.h>
+#include <babeltrace/graph/component-source-internal.h>
+#include <babeltrace/graph/component-filter-internal.h>
+#include <babeltrace/graph/connection-internal.h>
+#include <babeltrace/graph/private-connection.h>
+#include <babeltrace/graph/graph-internal.h>
+#include <babeltrace/graph/port-internal.h>
#include <babeltrace/object-internal.h>
#include <babeltrace/compiler.h>
#include <glib.h>
}
BT_HIDDEN
-void bt_connection_disconnect_ports(struct bt_connection *conn,
- struct bt_component *acting_comp)
+void bt_connection_disconnect_ports(struct bt_connection *conn)
{
struct bt_component *downstream_comp = NULL;
struct bt_component *upstream_comp = NULL;
struct bt_port *downstream_port = conn->downstream_port;
struct bt_port *upstream_port = conn->upstream_port;
+ struct bt_graph *graph = (void *) bt_object_get_parent(conn);
if (downstream_port) {
downstream_comp = bt_port_get_component(downstream_port);
conn->upstream_port = NULL;
}
- if (downstream_comp && downstream_comp != acting_comp) {
+ if (downstream_comp) {
bt_component_port_disconnected(downstream_comp,
downstream_port);
}
- if (upstream_comp && upstream_comp != acting_comp) {
- bt_component_port_disconnected(upstream_comp, upstream_port);
- }
-
if (upstream_comp) {
- struct bt_graph *graph = bt_component_get_graph(upstream_comp);
-
- assert(graph);
- bt_graph_notify_port_disconnected(graph, upstream_comp,
- upstream_port);
- bt_put(graph);
- }
-
- if (downstream_comp) {
- struct bt_graph *graph =
- bt_component_get_graph(downstream_comp);
-
- assert(graph);
- bt_graph_notify_port_disconnected(graph, downstream_comp,
- downstream_port);
- bt_put(graph);
+ bt_component_port_disconnected(upstream_comp, upstream_port);
}
+ assert(graph);
+ bt_graph_notify_ports_disconnected(graph, upstream_comp,
+ downstream_comp, upstream_port, downstream_port);
bt_put(downstream_comp);
bt_put(upstream_comp);
+ bt_put(graph);
}
struct bt_port *bt_connection_get_upstream_port(
if (init_method) {
enum bt_notification_iterator_status status = init_method(
- bt_private_component_from_component(upstream_component),
- bt_private_port_from_port(upstream_port),
- bt_private_notification_iterator_from_notification_iterator(iterator));
+ bt_private_notification_iterator_from_notification_iterator(iterator),
+ bt_private_port_from_port(upstream_port));
if (status < 0) {
goto error;
}