cpp-common/bt2c/fmt.hpp: use `wise_enum::string_type` in `EnableIfIsWiseEnum` definition
[babeltrace.git] / src / cli / babeltrace2-cfg.h
1 /*
2 * SPDX-License-Identifier: MIT
3 *
4 * Copyright 2016-2017 Philippe Proulx <pproulx@efficios.com>
5 *
6 * Babeltrace trace converter - CLI tool's configuration
7 */
8
9 #ifndef CLI_BABELTRACE_CFG_H
10 #define CLI_BABELTRACE_CFG_H
11
12 #include <stdlib.h>
13 #include <stdint.h>
14 #include <stdbool.h>
15 #include "lib/object.h"
16 #include "compat/compiler.h"
17 #include <glib.h>
18
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
28 struct bt_config_component {
29 bt_object base;
30 bt_component_class_type type;
31 GString *plugin_name;
32 GString *comp_cls_name;
33 bt_value *params;
34 GString *instance_name;
35 int log_level;
36 };
37
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;
44 };
45
46 struct bt_config {
47 bt_object base;
48 bt_value *plugin_paths;
49 bool omit_system_plugin_path;
50 bool omit_home_plugin_path;
51 bool command_needs_plugins;
52 const char *command_name;
53 int log_level;
54 enum bt_config_command command;
55 union {
56 /* BT_CONFIG_COMMAND_RUN */
57 struct {
58 /* Array of pointers to struct bt_config_component */
59 GPtrArray *sources;
60
61 /* Array of pointers to struct bt_config_component */
62 GPtrArray *filters;
63
64 /* Array of pointers to struct bt_config_component */
65 GPtrArray *sinks;
66
67 /* Array of pointers to struct bt_config_connection */
68 GPtrArray *connections;
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;
75
76 /*
77 * Whether or not to trim the source trace to the
78 * intersection of its streams.
79 */
80 bool stream_intersection_mode;
81 } run;
82
83 /* BT_CONFIG_COMMAND_HELP */
84 struct {
85 struct bt_config_component *cfg_component;
86 } help;
87
88 /* BT_CONFIG_COMMAND_QUERY */
89 struct {
90 GString *object;
91 struct bt_config_component *cfg_component;
92 } query;
93
94 /* BT_CONFIG_COMMAND_PRINT_CTF_METADATA */
95 struct {
96 GString *path;
97 GString *output_path;
98 } print_ctf_metadata;
99
100 /* BT_CONFIG_COMMAND_PRINT_LTTNG_LIVE_SESSIONS */
101 struct {
102 GString *url;
103 GString *output_path;
104 } print_lttng_live_sessions;
105 } cmd_data;
106 };
107
108 static inline
109 struct bt_config_component *bt_config_get_component(GPtrArray *array,
110 size_t index)
111 {
112 struct bt_config_component *comp = g_ptr_array_index(array, index);
113
114 bt_object_get_ref(comp);
115 return comp;
116 }
117
118 int bt_config_append_plugin_paths(bt_value *plugin_paths,
119 const char *arg);
120
121 void bt_config_connection_destroy(struct bt_config_connection *connection);
122
123 #endif /* CLI_BABELTRACE_CFG_H */
This page took 0.031362 seconds and 4 git commands to generate.