lib: force user to include `<babeltrace2/babeltrace.h>`
[babeltrace.git] / include / babeltrace2 / graph / graph.h
1 #ifndef BABELTRACE2_GRAPH_GRAPH_H
2 #define BABELTRACE2_GRAPH_GRAPH_H
3
4 /*
5 * Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
6 * Copyright 2017 Jérémie Galarneau <jeremie.galarneau@efficios.com>
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a copy
9 * of this software and associated documentation files (the "Software"), to deal
10 * in the Software without restriction, including without limitation the rights
11 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12 * copies of the Software, and to permit persons to whom the Software is
13 * furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included in
16 * all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24 * SOFTWARE.
25 */
26
27 #ifndef __BT_IN_BABELTRACE_H
28 # error "Please include <babeltrace2/babeltrace.h> instead."
29 #endif
30
31 /*
32 * For bt_bool, bt_component, bt_component_class,
33 * bt_component_class_filter, bt_component_class_sink,
34 * bt_component_class_source, bt_component_filter, bt_component_sink,
35 * bt_component_source, bt_connection, bt_graph, bt_port_input,
36 * bt_port_output, bt_value
37 */
38 #include <babeltrace2/types.h>
39
40 /* For bt_logging_level */
41 #include <babeltrace2/logging.h>
42
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46
47 typedef enum bt_graph_listener_func_status {
48 BT_GRAPH_LISTENER_FUNC_STATUS_OK = __BT_FUNC_STATUS_OK,
49 BT_GRAPH_LISTENER_FUNC_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
50 BT_GRAPH_LISTENER_FUNC_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
51 } bt_graph_listener_func_status;
52
53 typedef bt_graph_listener_func_status
54 (*bt_graph_filter_component_input_port_added_listener_func)(
55 const bt_component_filter *component,
56 const bt_port_input *port, void *data);
57
58 typedef bt_graph_listener_func_status
59 (*bt_graph_sink_component_input_port_added_listener_func)(
60 const bt_component_sink *component,
61 const bt_port_input *port, void *data);
62
63 typedef bt_graph_listener_func_status
64 (*bt_graph_source_component_output_port_added_listener_func)(
65 const bt_component_source *component,
66 const bt_port_output *port, void *data);
67
68 typedef bt_graph_listener_func_status
69 (*bt_graph_filter_component_output_port_added_listener_func)(
70 const bt_component_filter *component,
71 const bt_port_output *port, void *data);
72
73 typedef bt_graph_listener_func_status
74 (*bt_graph_source_filter_component_ports_connected_listener_func)(
75 const bt_component_source *source_component,
76 const bt_component_filter *filter_component,
77 const bt_port_output *upstream_port,
78 const bt_port_input *downstream_port, void *data);
79
80 typedef bt_graph_listener_func_status
81 (*bt_graph_source_sink_component_ports_connected_listener_func)(
82 const bt_component_source *source_component,
83 const bt_component_sink *sink_component,
84 const bt_port_output *upstream_port,
85 const bt_port_input *downstream_port, void *data);
86
87 typedef bt_graph_listener_func_status
88 (*bt_graph_filter_filter_component_ports_connected_listener_func)(
89 const bt_component_filter *filter_component_upstream,
90 const bt_component_filter *filter_component_downstream,
91 const bt_port_output *upstream_port,
92 const bt_port_input *downstream_port,
93 void *data);
94
95 typedef bt_graph_listener_func_status
96 (*bt_graph_filter_sink_component_ports_connected_listener_func)(
97 const bt_component_filter *filter_component,
98 const bt_component_sink *sink_component,
99 const bt_port_output *upstream_port,
100 const bt_port_input *downstream_port, void *data);
101
102 typedef void (* bt_graph_listener_removed_func)(void *data);
103
104 extern bt_graph *bt_graph_create(void);
105
106 typedef enum bt_graph_add_component_status {
107 BT_GRAPH_ADD_COMPONENT_STATUS_OK = __BT_FUNC_STATUS_OK,
108 BT_GRAPH_ADD_COMPONENT_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
109 BT_GRAPH_ADD_COMPONENT_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
110 } bt_graph_add_component_status;
111
112 extern bt_graph_add_component_status
113 bt_graph_add_source_component(bt_graph *graph,
114 const bt_component_class_source *component_class,
115 const char *name, const bt_value *params,
116 bt_logging_level log_level, const bt_component_source **component);
117
118 extern bt_graph_add_component_status
119 bt_graph_add_source_component_with_init_method_data(
120 bt_graph *graph,
121 const bt_component_class_source *component_class,
122 const char *name, const bt_value *params,
123 void *init_method_data, bt_logging_level log_level,
124 const bt_component_source **component);
125
126 extern bt_graph_add_component_status
127 bt_graph_add_filter_component(bt_graph *graph,
128 const bt_component_class_filter *component_class,
129 const char *name, const bt_value *params,
130 bt_logging_level log_level,
131 const bt_component_filter **component);
132
133 extern bt_graph_add_component_status
134 bt_graph_add_filter_component_with_init_method_data(
135 bt_graph *graph,
136 const bt_component_class_filter *component_class,
137 const char *name, const bt_value *params,
138 void *init_method_data, bt_logging_level log_level,
139 const bt_component_filter **component);
140
141 extern bt_graph_add_component_status
142 bt_graph_add_sink_component(
143 bt_graph *graph, const bt_component_class_sink *component_class,
144 const char *name, const bt_value *params,
145 bt_logging_level log_level,
146 const bt_component_sink **component);
147
148 extern bt_graph_add_component_status
149 bt_graph_add_sink_component_with_init_method_data(
150 bt_graph *graph, const bt_component_class_sink *component_class,
151 const char *name, const bt_value *params,
152 void *init_method_data, bt_logging_level log_level,
153 const bt_component_sink **component);
154
155 typedef enum bt_graph_connect_ports_status {
156 BT_GRAPH_CONNECT_PORTS_STATUS_OK = __BT_FUNC_STATUS_OK,
157 BT_GRAPH_CONNECT_PORTS_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
158 BT_GRAPH_CONNECT_PORTS_STATUS_CANCELED = __BT_FUNC_STATUS_CANCELED,
159 BT_GRAPH_CONNECT_PORTS_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
160 } bt_graph_connect_ports_status;
161
162 extern bt_graph_connect_ports_status bt_graph_connect_ports(bt_graph *graph,
163 const bt_port_output *upstream,
164 const bt_port_input *downstream,
165 const bt_connection **connection);
166
167 typedef enum bt_graph_run_status {
168 BT_GRAPH_RUN_STATUS_OK = __BT_FUNC_STATUS_OK,
169 BT_GRAPH_RUN_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
170 BT_GRAPH_RUN_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
171 BT_GRAPH_RUN_STATUS_AGAIN = __BT_FUNC_STATUS_AGAIN,
172 BT_GRAPH_RUN_STATUS_END = __BT_FUNC_STATUS_END,
173 BT_GRAPH_RUN_STATUS_CANCELED = __BT_FUNC_STATUS_CANCELED,
174 } bt_graph_run_status;
175
176 extern bt_graph_run_status bt_graph_run(bt_graph *graph);
177
178 typedef enum bt_graph_consume_status {
179 BT_GRAPH_CONSUME_STATUS_OK = __BT_FUNC_STATUS_OK,
180 BT_GRAPH_CONSUME_STATUS_ERROR = __BT_FUNC_STATUS_ERROR,
181 BT_GRAPH_CONSUME_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
182 BT_GRAPH_CONSUME_STATUS_AGAIN = __BT_FUNC_STATUS_AGAIN,
183 BT_GRAPH_CONSUME_STATUS_END = __BT_FUNC_STATUS_END,
184 BT_GRAPH_CONSUME_STATUS_CANCELED = __BT_FUNC_STATUS_CANCELED,
185 } bt_graph_consume_status;
186
187 extern bt_graph_consume_status bt_graph_consume(bt_graph *graph);
188
189 typedef enum bt_graph_add_listener_status {
190 BT_GRAPH_ADD_LISTENER_STATUS_OK = __BT_FUNC_STATUS_OK,
191 BT_GRAPH_ADD_LISTENER_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR,
192 } bt_graph_add_listener_status;
193
194 extern bt_graph_add_listener_status
195 bt_graph_add_filter_component_input_port_added_listener(
196 bt_graph *graph,
197 bt_graph_filter_component_input_port_added_listener_func listener,
198 bt_graph_listener_removed_func listener_removed, void *data,
199 int *listener_id);
200
201 extern bt_graph_add_listener_status
202 bt_graph_add_sink_component_input_port_added_listener(
203 bt_graph *graph,
204 bt_graph_sink_component_input_port_added_listener_func listener,
205 bt_graph_listener_removed_func listener_removed, void *data,
206 int *listener_id);
207
208 extern bt_graph_add_listener_status
209 bt_graph_add_source_component_output_port_added_listener(
210 bt_graph *graph,
211 bt_graph_source_component_output_port_added_listener_func listener,
212 bt_graph_listener_removed_func listener_removed, void *data,
213 int *listener_id);
214
215 extern bt_graph_add_listener_status
216 bt_graph_add_filter_component_output_port_added_listener(
217 bt_graph *graph,
218 bt_graph_filter_component_output_port_added_listener_func listener,
219 bt_graph_listener_removed_func listener_removed, void *data,
220 int *listener_id);
221
222 extern bt_graph_add_listener_status
223 bt_graph_add_source_filter_component_ports_connected_listener(
224 bt_graph *graph,
225 bt_graph_source_filter_component_ports_connected_listener_func listener,
226 bt_graph_listener_removed_func listener_removed, void *data,
227 int *listener_id);
228
229 extern bt_graph_add_listener_status
230 bt_graph_add_filter_filter_component_ports_connected_listener(
231 bt_graph *graph,
232 bt_graph_filter_filter_component_ports_connected_listener_func listener,
233 bt_graph_listener_removed_func listener_removed, void *data,
234 int *listener_id);
235
236 extern bt_graph_add_listener_status
237 bt_graph_add_source_sink_component_ports_connected_listener(
238 bt_graph *graph,
239 bt_graph_source_sink_component_ports_connected_listener_func listener,
240 bt_graph_listener_removed_func listener_removed, void *data,
241 int *listener_id);
242
243 extern bt_graph_add_listener_status
244 bt_graph_add_filter_sink_component_ports_connected_listener(
245 bt_graph *graph,
246 bt_graph_filter_sink_component_ports_connected_listener_func listener,
247 bt_graph_listener_removed_func listener_removed, void *data,
248 int *listener_id);
249
250 typedef enum bt_graph_cancel_status {
251 BT_GRAPH_CANCEL_STATUS_OK = __BT_FUNC_STATUS_OK,
252 } bt_graph_cancel_status;
253
254 extern bt_graph_cancel_status bt_graph_cancel(bt_graph *graph);
255
256 #ifdef __cplusplus
257 }
258 #endif
259
260 #endif /* BABELTRACE2_GRAPH_GRAPH_H */
This page took 0.034598 seconds and 4 git commands to generate.