Commit | Line | Data |
---|---|---|
c42c79ea | 1 | /* |
0235b0db | 2 | * SPDX-License-Identifier: MIT |
c42c79ea | 3 | * |
9009cc24 | 4 | * Copyright 2016-2017 Philippe Proulx <pproulx@efficios.com> |
c42c79ea | 5 | * |
0235b0db | 6 | * Babeltrace trace converter - CLI tool's configuration |
c42c79ea PP |
7 | */ |
8 | ||
0235b0db MJ |
9 | #ifndef CLI_BABELTRACE_CFG_H |
10 | #define CLI_BABELTRACE_CFG_H | |
11 | ||
c42c79ea | 12 | #include <stdlib.h> |
015cee23 | 13 | #include <stdint.h> |
c55a9f58 | 14 | #include <stdbool.h> |
578e048b MJ |
15 | #include "lib/object.h" |
16 | #include "compat/compiler.h" | |
c42c79ea PP |
17 | #include <glib.h> |
18 | ||
9009cc24 PP |
19 | enum bt_config_command { |
20 | BT_CONFIG_COMMAND_RUN, | |
21 | BT_CONFIG_COMMAND_PRINT_CTF_METADATA, | |
22 | BT_CONFIG_COMMAND_PRINT_LTTNG_LIVE_SESSIONS, | |
23 | BT_CONFIG_COMMAND_LIST_PLUGINS, | |
24 | BT_CONFIG_COMMAND_HELP, | |
25 | BT_CONFIG_COMMAND_QUERY, | |
26 | }; | |
27 | ||
c42c79ea | 28 | struct bt_config_component { |
b19ff26f | 29 | bt_object base; |
4cdfc5e8 | 30 | bt_component_class_type type; |
c42c79ea | 31 | GString *plugin_name; |
db0f160a | 32 | GString *comp_cls_name; |
b19ff26f | 33 | bt_value *params; |
3b6cfcc5 | 34 | GString *instance_name; |
29da2ffc | 35 | int log_level; |
c42c79ea PP |
36 | }; |
37 | ||
9009cc24 PP |
38 | struct bt_config_connection { |
39 | GString *upstream_comp_name; | |
40 | GString *downstream_comp_name; | |
41 | GString *upstream_port_glob; | |
42 | GString *downstream_port_glob; | |
43 | GString *arg; | |
290725f7 PP |
44 | }; |
45 | ||
c42c79ea | 46 | struct bt_config { |
b19ff26f | 47 | bt_object base; |
b19ff26f | 48 | bt_value *plugin_paths; |
db0f160a PP |
49 | bool omit_system_plugin_path; |
50 | bool omit_home_plugin_path; | |
51 | bool command_needs_plugins; | |
290725f7 | 52 | const char *command_name; |
83094759 | 53 | int log_level; |
290725f7 PP |
54 | enum bt_config_command command; |
55 | union { | |
db0f160a | 56 | /* BT_CONFIG_COMMAND_RUN */ |
290725f7 | 57 | struct { |
290725f7 PP |
58 | /* Array of pointers to struct bt_config_component */ |
59 | GPtrArray *sources; | |
c42c79ea | 60 | |
ebba3338 PP |
61 | /* Array of pointers to struct bt_config_component */ |
62 | GPtrArray *filters; | |
63 | ||
290725f7 PP |
64 | /* Array of pointers to struct bt_config_component */ |
65 | GPtrArray *sinks; | |
c42c79ea | 66 | |
ebba3338 PP |
67 | /* Array of pointers to struct bt_config_connection */ |
68 | GPtrArray *connections; | |
9009cc24 PP |
69 | |
70 | /* | |
71 | * Number of microseconds to sleep when we need | |
72 | * to retry to run the graph. | |
73 | */ | |
74 | uint64_t retry_duration_us; | |
75a2cb9b JG |
75 | |
76 | /* | |
77 | * Whether or not to trim the source trace to the | |
78 | * intersection of its streams. | |
79 | */ | |
80 | bool stream_intersection_mode; | |
db0f160a | 81 | } run; |
22e22462 PP |
82 | |
83 | /* BT_CONFIG_COMMAND_HELP */ | |
84 | struct { | |
90de159b | 85 | struct bt_config_component *cfg_component; |
22e22462 | 86 | } help; |
63ce0e1d | 87 | |
a67681c1 | 88 | /* BT_CONFIG_COMMAND_QUERY */ |
63ce0e1d | 89 | struct { |
a67681c1 | 90 | GString *object; |
63ce0e1d | 91 | struct bt_config_component *cfg_component; |
a67681c1 | 92 | } query; |
db0f160a PP |
93 | |
94 | /* BT_CONFIG_COMMAND_PRINT_CTF_METADATA */ | |
95 | struct { | |
96 | GString *path; | |
c327e427 | 97 | GString *output_path; |
db0f160a PP |
98 | } print_ctf_metadata; |
99 | ||
100 | /* BT_CONFIG_COMMAND_PRINT_LTTNG_LIVE_SESSIONS */ | |
101 | struct { | |
102 | GString *url; | |
c327e427 | 103 | GString *output_path; |
db0f160a | 104 | } print_lttng_live_sessions; |
290725f7 | 105 | } cmd_data; |
c42c79ea PP |
106 | }; |
107 | ||
108 | static inline | |
109 | struct bt_config_component *bt_config_get_component(GPtrArray *array, | |
110 | size_t index) | |
111 | { | |
398454ed PP |
112 | struct bt_config_component *comp = g_ptr_array_index(array, index); |
113 | ||
114 | bt_object_get_ref(comp); | |
115 | return comp; | |
c42c79ea PP |
116 | } |
117 | ||
b19ff26f | 118 | int bt_config_append_plugin_paths(bt_value *plugin_paths, |
601b0d3c | 119 | const char *arg); |
5a3ee633 | 120 | |
9009cc24 PP |
121 | void bt_config_connection_destroy(struct bt_config_connection *connection); |
122 | ||
123 | #endif /* CLI_BABELTRACE_CFG_H */ |