Move to kernel style SPDX license identifiers
[babeltrace.git] / src / lib / graph / connection.h
CommitLineData
784cdc68 1/*
0235b0db
MJ
2 * SPDX-License-Identifier: MIT
3 *
e2f7325d 4 * Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
784cdc68 5 * Copyright 2017 Jérémie Galarneau <jeremie.galarneau@efficios.com>
784cdc68
JG
6 */
7
0235b0db
MJ
8#ifndef BABELTRACE_GRAPH_CONNECTION_INTERNAL_H
9#define BABELTRACE_GRAPH_CONNECTION_INTERNAL_H
10
43c59509 11#include <babeltrace2/graph/connection.h>
578e048b
MJ
12#include "lib/object.h"
13#include "common/assert.h"
91d81473 14#include "common/macros.h"
c42ea0af 15#include <stdbool.h>
784cdc68 16
578e048b
MJ
17#include "message/iterator.h"
18
784cdc68
JG
19struct bt_graph;
20
21struct bt_connection {
22 /*
23 * The graph is a connection's parent and the connection is the parent
24 * of all iterators it has created.
25 */
26 struct bt_object base;
27 /*
28 * Weak references are held to both ports. Their existence is guaranteed
29 * by the existence of the graph and thus, of their respective
30 * components.
31 */
32 /* Downstream port. */
72b913fb 33 struct bt_port *downstream_port;
784cdc68 34 /* Upstream port. */
72b913fb 35 struct bt_port *upstream_port;
bd14d768
PP
36
37 /*
d6e69534 38 * Weak references to all the message iterators that were
bd14d768
PP
39 * created on this connection.
40 */
41 GPtrArray *iterators;
bf55043c 42
85031ceb 43 bool notified_upstream_port_connected;
85031ceb 44 bool notified_downstream_port_connected;
85031ceb 45 bool notified_graph_ports_connected;
784cdc68
JG
46};
47
48BT_HIDDEN
49struct bt_connection *bt_connection_create(struct bt_graph *graph,
72b913fb
PP
50 struct bt_port *upstream_port,
51 struct bt_port *downstream_port);
52
53BT_HIDDEN
c42ea0af 54void bt_connection_end(struct bt_connection *conn, bool try_remove_from_graph);
784cdc68 55
bd14d768
PP
56BT_HIDDEN
57void bt_connection_remove_iterator(struct bt_connection *conn,
9a2c8b8e 58 struct bt_message_iterator *iterator);
bd14d768 59
c28d097c
PP
60static inline
61struct bt_graph *bt_connection_borrow_graph(struct bt_connection *conn)
62{
98b15851 63 BT_ASSERT_DBG(conn);
c28d097c
PP
64 return (void *) conn->base.parent;
65}
66
6ac74c0c 67#endif /* BABELTRACE_GRAPH_CONNECTION_INTERNAL_H */
This page took 0.073417 seconds and 4 git commands to generate.