cpp-common/bt2c/fmt.hpp: use `wise_enum::string_type` in `EnableIfIsWiseEnum` definition
[babeltrace.git] / src / plugins / ctf / lttng-live / lttng-viewer-abi.hpp
CommitLineData
7cdc2bab 1/*
0235b0db 2 * SPDX-License-Identifier: MIT
7cdc2bab 3 *
0235b0db
MJ
4 * Copyright (C) 2013 Julien Desfossez <jdesfossez@efficios.com>
5 * Copyright (C) 2013 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 * Copyright (C) 2013 David Goulet <dgoulet@efficios.com>
7cdc2bab
MD
7 */
8
0235b0db
MJ
9#ifndef LTTNG_VIEWER_ABI_H
10#define LTTNG_VIEWER_ABI_H
11
3c22a242 12#include <stdint.h>
c802cacb 13
0f5c5d5c
SM
14#include "common/common.h"
15#include "compat/limits.h" /* IWYU pragma: keep */
16#include "cpp-common/vendor/fmt/format.h" /* IWYU pragma: keep */
7cdc2bab 17
4164020e
SM
18#define LTTNG_VIEWER_PATH_MAX 4096
19#define LTTNG_VIEWER_NAME_MAX 255
20#define LTTNG_VIEWER_HOST_NAME_MAX 64
7cdc2bab
MD
21
22/* Flags in reply to get_next_index and get_packet. */
4164020e
SM
23enum
24{
25 /* New metadata is required to read this packet. */
26 LTTNG_VIEWER_FLAG_NEW_METADATA = (1 << 0),
27 /* New stream got added to the trace. */
28 LTTNG_VIEWER_FLAG_NEW_STREAM = (1 << 1),
7cdc2bab
MD
29};
30
4164020e
SM
31enum lttng_viewer_command
32{
33 LTTNG_VIEWER_CONNECT = 1,
34 LTTNG_VIEWER_LIST_SESSIONS = 2,
35 LTTNG_VIEWER_ATTACH_SESSION = 3,
36 LTTNG_VIEWER_GET_NEXT_INDEX = 4,
37 LTTNG_VIEWER_GET_PACKET = 5,
38 LTTNG_VIEWER_GET_METADATA = 6,
39 LTTNG_VIEWER_GET_NEW_STREAMS = 7,
40 LTTNG_VIEWER_CREATE_SESSION = 8,
41 LTTNG_VIEWER_DETACH_SESSION = 9,
7cdc2bab
MD
42};
43
0f5c5d5c
SM
44inline const char *format_as(const lttng_viewer_command cmd) noexcept
45{
46 switch (cmd) {
47 case LTTNG_VIEWER_CONNECT:
48 return "CONNECT";
49
50 case LTTNG_VIEWER_LIST_SESSIONS:
51 return "LIST_SESSIONS";
52
53 case LTTNG_VIEWER_ATTACH_SESSION:
54 return "ATTACH_SESSION";
55
56 case LTTNG_VIEWER_GET_NEXT_INDEX:
57 return "GET_NEXT_INDEX";
58
59 case LTTNG_VIEWER_GET_PACKET:
60 return "GET_PACKET";
61
62 case LTTNG_VIEWER_GET_METADATA:
63 return "GET_METADATA";
64
65 case LTTNG_VIEWER_GET_NEW_STREAMS:
66 return "GET_NEW_STREAMS";
67
68 case LTTNG_VIEWER_CREATE_SESSION:
69 return "CREATE_SESSION";
70
71 case LTTNG_VIEWER_DETACH_SESSION:
72 return "DETACH_SESSION";
73 }
74
75 bt_common_abort();
76}
77
4164020e
SM
78enum lttng_viewer_attach_return_code
79{
80 LTTNG_VIEWER_ATTACH_OK = 1, /* The attach command succeeded. */
81 LTTNG_VIEWER_ATTACH_ALREADY = 2, /* A viewer is already attached. */
82 LTTNG_VIEWER_ATTACH_UNK = 3, /* The session ID is unknown. */
83 LTTNG_VIEWER_ATTACH_NOT_LIVE = 4, /* The session is not live. */
84 LTTNG_VIEWER_ATTACH_SEEK_ERR = 5, /* Seek error. */
85 LTTNG_VIEWER_ATTACH_NO_SESSION = 6, /* No viewer session created. */
7cdc2bab
MD
86};
87
4164020e
SM
88enum lttng_viewer_detach_session_return_code
89{
90 LTTNG_VIEWER_DETACH_SESSION_OK = 1,
91 LTTNG_VIEWER_DETACH_SESSION_UNK = 2,
92 LTTNG_VIEWER_DETACH_SESSION_ERR = 3,
7cdc2bab
MD
93};
94
4164020e
SM
95enum lttng_viewer_next_index_return_code
96{
97 LTTNG_VIEWER_INDEX_OK = 1, /* Index is available. */
98 LTTNG_VIEWER_INDEX_RETRY = 2, /* Index not yet available. */
99 LTTNG_VIEWER_INDEX_HUP = 3, /* Index closed (trace destroyed). */
100 LTTNG_VIEWER_INDEX_ERR = 4, /* Unknow error. */
101 LTTNG_VIEWER_INDEX_INACTIVE = 5, /* Inactive stream beacon. */
102 LTTNG_VIEWER_INDEX_EOF = 6, /* End of index file. */
7cdc2bab
MD
103};
104
0f5c5d5c
SM
105inline const char *format_as(const lttng_viewer_next_index_return_code code) noexcept
106{
107 switch (code) {
108 case LTTNG_VIEWER_INDEX_OK:
109 return "INDEX_OK";
110
111 case LTTNG_VIEWER_INDEX_RETRY:
112 return "INDEX_RETRY";
113
114 case LTTNG_VIEWER_INDEX_HUP:
115 return "INDEX_HUP";
116
117 case LTTNG_VIEWER_INDEX_ERR:
118 return "INDEX_ERR";
119
120 case LTTNG_VIEWER_INDEX_INACTIVE:
121 return "INDEX_INACTIVE";
122
123 case LTTNG_VIEWER_INDEX_EOF:
124 return "INDEX_EOF";
125 }
126
127 bt_common_abort();
128}
129
4164020e
SM
130enum lttng_viewer_get_packet_return_code
131{
132 LTTNG_VIEWER_GET_PACKET_OK = 1,
133 LTTNG_VIEWER_GET_PACKET_RETRY = 2,
134 LTTNG_VIEWER_GET_PACKET_ERR = 3,
135 LTTNG_VIEWER_GET_PACKET_EOF = 4,
7cdc2bab
MD
136};
137
0f5c5d5c
SM
138inline const char *format_as(const lttng_viewer_get_packet_return_code code) noexcept
139{
140 switch (code) {
141 case LTTNG_VIEWER_GET_PACKET_OK:
142 return "GET_PACKET_OK";
143
144 case LTTNG_VIEWER_GET_PACKET_RETRY:
145 return "GET_PACKET_RETRY";
146
147 case LTTNG_VIEWER_GET_PACKET_ERR:
148 return "GET_PACKET_ERR";
149
150 case LTTNG_VIEWER_GET_PACKET_EOF:
151 return "GET_PACKET_EOF";
152 }
153
154 bt_common_abort();
155};
156
4164020e
SM
157enum lttng_viewer_get_metadata_return_code
158{
159 LTTNG_VIEWER_METADATA_OK = 1,
160 LTTNG_VIEWER_NO_NEW_METADATA = 2,
161 LTTNG_VIEWER_METADATA_ERR = 3,
7cdc2bab
MD
162};
163
4164020e
SM
164enum lttng_viewer_connection_type
165{
166 LTTNG_VIEWER_CLIENT_COMMAND = 1,
167 LTTNG_VIEWER_CLIENT_MESSAGE = 2,
7cdc2bab
MD
168};
169
4164020e
SM
170enum lttng_viewer_seek
171{
172 /* Receive the trace packets from the beginning. */
173 LTTNG_VIEWER_SEEK_BEGINNING = 1,
174 /* Receive the trace packets from now. */
175 LTTNG_VIEWER_SEEK_LAST = 2,
7cdc2bab
MD
176};
177
0f5c5d5c
SM
178inline const char *format_as(const lttng_viewer_seek seek) noexcept
179{
180 switch (seek) {
181 case LTTNG_VIEWER_SEEK_BEGINNING:
182 return "SEEK_BEGINNING";
183
184 case LTTNG_VIEWER_SEEK_LAST:
185 return "SEEK_LAST";
186 }
187
188 bt_common_abort();
189}
190
4164020e
SM
191enum lttng_viewer_new_streams_return_code
192{
193 LTTNG_VIEWER_NEW_STREAMS_OK = 1, /* If new streams are being sent. */
194 LTTNG_VIEWER_NEW_STREAMS_NO_NEW = 2, /* If no new streams are available. */
195 LTTNG_VIEWER_NEW_STREAMS_ERR = 3, /* Error. */
196 LTTNG_VIEWER_NEW_STREAMS_HUP = 4, /* Session closed. */
7cdc2bab
MD
197};
198
4164020e
SM
199enum lttng_viewer_create_session_return_code
200{
201 LTTNG_VIEWER_CREATE_SESSION_OK = 1,
202 LTTNG_VIEWER_CREATE_SESSION_ERR = 2,
7cdc2bab
MD
203};
204
4164020e
SM
205struct lttng_viewer_session
206{
207 uint64_t id;
208 uint32_t live_timer;
209 uint32_t clients;
210 uint32_t streams;
211 char hostname[LTTNG_VIEWER_HOST_NAME_MAX];
212 char session_name[LTTNG_VIEWER_NAME_MAX];
7cdc2bab
MD
213} __attribute__((__packed__));
214
4164020e
SM
215struct lttng_viewer_stream
216{
217 uint64_t id;
218 uint64_t ctf_trace_id;
219 uint32_t metadata_flag;
220 char path_name[LTTNG_VIEWER_PATH_MAX];
221 char channel_name[LTTNG_VIEWER_NAME_MAX];
7cdc2bab
MD
222} __attribute__((__packed__));
223
4164020e
SM
224struct lttng_viewer_cmd
225{
226 uint64_t data_size; /* data size following this header */
227 uint32_t cmd; /* enum lttcomm_relayd_command */
228 uint32_t cmd_version; /* command version */
7cdc2bab
MD
229} __attribute__((__packed__));
230
231/*
232 * LTTNG_VIEWER_CONNECT payload.
233 */
4164020e
SM
234struct lttng_viewer_connect
235{
236 /* session ID assigned by the relay for command connections */
237 uint64_t viewer_session_id;
238 uint32_t major;
239 uint32_t minor;
240 uint32_t type; /* enum lttng_viewer_connection_type */
7cdc2bab
MD
241} __attribute__((__packed__));
242
243/*
244 * LTTNG_VIEWER_LIST_SESSIONS payload.
245 */
4164020e
SM
246struct lttng_viewer_list_sessions
247{
248 uint32_t sessions_count;
249 char session_list[]; /* struct lttng_viewer_session */
7cdc2bab
MD
250} __attribute__((__packed__));
251
252/*
253 * LTTNG_VIEWER_ATTACH_SESSION payload.
254 */
4164020e
SM
255struct lttng_viewer_attach_session_request
256{
257 uint64_t session_id;
258 uint64_t offset; /* unused for now */
259 uint32_t seek; /* enum lttng_viewer_seek */
7cdc2bab
MD
260} __attribute__((__packed__));
261
4164020e
SM
262struct lttng_viewer_attach_session_response
263{
264 /* enum lttng_viewer_attach_return_code */
265 uint32_t status;
266 uint32_t streams_count;
267 /* struct lttng_viewer_stream */
268 char stream_list[];
7cdc2bab
MD
269} __attribute__((__packed__));
270
271/*
272 * LTTNG_VIEWER_GET_NEXT_INDEX payload.
273 */
4164020e
SM
274struct lttng_viewer_get_next_index
275{
276 uint64_t stream_id;
277} __attribute__((__packed__));
278
279struct lttng_viewer_index
280{
281 uint64_t offset;
282 uint64_t packet_size;
283 uint64_t content_size;
284 uint64_t timestamp_begin;
285 uint64_t timestamp_end;
286 uint64_t events_discarded;
287 uint64_t stream_id;
288 uint32_t status; /* enum lttng_viewer_next_index_return_code */
289 uint32_t flags; /* LTTNG_VIEWER_FLAG_* */
290} __attribute__((__packed__));
7cdc2bab
MD
291
292/*
293 * LTTNG_VIEWER_GET_PACKET payload.
294 */
4164020e
SM
295struct lttng_viewer_get_packet
296{
297 uint64_t stream_id;
298 uint64_t offset;
299 uint32_t len;
7cdc2bab
MD
300} __attribute__((__packed__));
301
4164020e
SM
302struct lttng_viewer_trace_packet
303{
304 uint32_t status; /* enum lttng_viewer_get_packet_return_code */
305 uint32_t len;
306 uint32_t flags; /* LTTNG_VIEWER_FLAG_* */
307 char data[];
7cdc2bab
MD
308} __attribute__((__packed__));
309
310/*
311 * LTTNG_VIEWER_GET_METADATA payload.
312 */
4164020e
SM
313struct lttng_viewer_get_metadata
314{
315 uint64_t stream_id;
7cdc2bab
MD
316} __attribute__((__packed__));
317
4164020e
SM
318struct lttng_viewer_metadata_packet
319{
320 uint64_t len;
321 uint32_t status; /* enum lttng_viewer_get_metadata_return_code */
322 char data[];
7cdc2bab
MD
323} __attribute__((__packed__));
324
325/*
326 * LTTNG_VIEWER_GET_NEW_STREAMS payload.
327 */
4164020e
SM
328struct lttng_viewer_new_streams_request
329{
330 uint64_t session_id;
7cdc2bab
MD
331} __attribute__((__packed__));
332
4164020e
SM
333struct lttng_viewer_new_streams_response
334{
335 /* enum lttng_viewer_new_streams_return_code */
336 uint32_t status;
337 uint32_t streams_count;
338 /* struct lttng_viewer_stream */
339 char stream_list[];
7cdc2bab
MD
340} __attribute__((__packed__));
341
4164020e
SM
342struct lttng_viewer_create_session_response
343{
344 /* enum lttng_viewer_create_session_return_code */
345 uint32_t status;
7cdc2bab
MD
346} __attribute__((__packed__));
347
348/*
349 * LTTNG_VIEWER_DETACH_SESSION payload.
350 */
4164020e
SM
351struct lttng_viewer_detach_session_request
352{
353 uint64_t session_id;
7cdc2bab
MD
354} __attribute__((__packed__));
355
4164020e
SM
356struct lttng_viewer_detach_session_response
357{
358 /* enum lttng_viewer_detach_session_return_code */
359 uint32_t status;
7cdc2bab
MD
360} __attribute__((__packed__));
361
362#endif /* LTTNG_VIEWER_ABI_H */
This page took 0.106031 seconds and 4 git commands to generate.