2 * SPDX-License-Identifier: MIT
4 * Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
5 * Copyright 2017 Jérémie Galarneau <jeremie.galarneau@efficios.com>
8 #ifndef BABELTRACE_GRAPH_CONNECTION_INTERNAL_H
9 #define BABELTRACE_GRAPH_CONNECTION_INTERNAL_H
11 #include <babeltrace2/graph/connection.h>
12 #include "lib/object.h"
13 #include "common/assert.h"
14 #include "common/macros.h"
17 #include "message/iterator.h"
21 struct bt_connection
{
23 * The graph is a connection's parent and the connection is the parent
24 * of all iterators it has created.
26 struct bt_object base
;
28 * Weak references are held to both ports. Their existence is guaranteed
29 * by the existence of the graph and thus, of their respective
32 /* Downstream port. */
33 struct bt_port
*downstream_port
;
35 struct bt_port
*upstream_port
;
38 * Weak references to all the message iterators that were
39 * created on this connection.
43 bool notified_upstream_port_connected
;
44 bool notified_downstream_port_connected
;
45 bool notified_graph_ports_connected
;
49 struct bt_connection
*bt_connection_create(struct bt_graph
*graph
,
50 struct bt_port
*upstream_port
,
51 struct bt_port
*downstream_port
);
54 void bt_connection_end(struct bt_connection
*conn
, bool try_remove_from_graph
);
57 void bt_connection_remove_iterator(struct bt_connection
*conn
,
58 struct bt_message_iterator
*iterator
);
61 struct bt_graph
*bt_connection_borrow_graph(struct bt_connection
*conn
)
64 return (void *) conn
->base
.parent
;
67 #endif /* BABELTRACE_GRAPH_CONNECTION_INTERNAL_H */