Call a single "ports connected/disconnected" graph listener instead of two
[babeltrace.git] / lib / component / connection.c
index 87d9677883df8a1bb55ebdd0b44ec9d8615e1a99..1b58c02689e62b01da31e974348ec8b341532e7c 100644 (file)
  * 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>
@@ -89,13 +89,13 @@ end:
 }
 
 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);
@@ -109,36 +109,21 @@ void bt_connection_disconnect_ports(struct bt_connection *conn,
                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(
@@ -223,9 +208,8 @@ bt_private_connection_create_notification_iterator(
 
        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;
                }
This page took 0.02656 seconds and 4 git commands to generate.