Propagate trace format to relayd on session creation
[lttng-tools.git] / src / common / relayd / relayd.hpp
1 /*
2 * Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 */
7
8 #ifndef _RELAYD_H
9 #define _RELAYD_H
10
11 #include <stdbool.h>
12 #include <unistd.h>
13
14 #include <common/dynamic-array.hpp>
15 #include <common/sessiond-comm/relayd.hpp>
16 #include <common/sessiond-comm/sessiond-comm.hpp>
17 #include <common/trace-chunk.hpp>
18 #include <lttng/trace-format-descriptor-internal.hpp>
19
20 struct relayd_stream_rotation_position {
21 uint64_t stream_id;
22 /*
23 * Packet sequence number of the first packet belonging to the new
24 * "destination" trace chunk to which the stream is rotating.
25 *
26 * Ignored for metadata streams.
27 */
28 uint64_t rotate_at_seq_num;
29 };
30
31 int relayd_connect(struct lttcomm_relayd_sock *sock);
32 int relayd_close(struct lttcomm_relayd_sock *sock);
33 int relayd_create_session(struct lttcomm_relayd_sock *rsock,
34 uint64_t *relayd_session_id,
35 const char *session_name,
36 const char *hostname,
37 const char *base_path,
38 int session_live_timer,
39 unsigned int snapshot,
40 uint64_t sessiond_session_id,
41 const lttng_uuid& sessiond_uuid,
42 const uint64_t *current_chunk_id,
43 time_t creation_time,
44 bool session_name_contains_creation_time,
45 char *output_path,
46 lttng::trace_format_descriptor& trace_format);
47 int relayd_add_stream(struct lttcomm_relayd_sock *sock,
48 const char *channel_name,
49 const char *domain_name,
50 const char *pathname,
51 uint64_t *stream_id,
52 uint64_t tracefile_size,
53 uint64_t tracefile_count,
54 struct lttng_trace_chunk *trace_chunk);
55 int relayd_streams_sent(struct lttcomm_relayd_sock *rsock);
56 int relayd_send_close_stream(struct lttcomm_relayd_sock *sock, uint64_t stream_id,
57 uint64_t last_net_seq_num);
58 int relayd_version_check(struct lttcomm_relayd_sock *sock);
59 int relayd_start_data(struct lttcomm_relayd_sock *sock);
60 int relayd_send_metadata(struct lttcomm_relayd_sock *sock, size_t len);
61 int relayd_send_data_hdr(struct lttcomm_relayd_sock *sock,
62 struct lttcomm_relayd_data_hdr *hdr, size_t size);
63 int relayd_data_pending(struct lttcomm_relayd_sock *sock, uint64_t stream_id,
64 uint64_t last_net_seq_num);
65 int relayd_quiescent_control(struct lttcomm_relayd_sock *sock,
66 uint64_t metadata_stream_id);
67 int relayd_begin_data_pending(struct lttcomm_relayd_sock *sock, uint64_t id);
68 int relayd_end_data_pending(struct lttcomm_relayd_sock *sock, uint64_t id,
69 unsigned int *is_data_inflight);
70 int relayd_send_index(struct lttcomm_relayd_sock *rsock,
71 struct ctf_packet_index *index, uint64_t relay_stream_id,
72 uint64_t net_seq_num);
73 int relayd_reset_metadata(struct lttcomm_relayd_sock *rsock,
74 uint64_t stream_id, uint64_t version);
75 /* `positions` is an array of `stream_count` relayd_stream_rotation_position. */
76 int relayd_rotate_streams(struct lttcomm_relayd_sock *sock,
77 unsigned int stream_count, const uint64_t *new_chunk_id,
78 const struct relayd_stream_rotation_position *positions);
79 int relayd_create_trace_chunk(struct lttcomm_relayd_sock *sock,
80 struct lttng_trace_chunk *chunk);
81 int relayd_close_trace_chunk(
82 struct lttcomm_relayd_sock *sock, struct lttng_trace_chunk *chunk, char *path);
83 int relayd_trace_chunk_exists(
84 struct lttcomm_relayd_sock *sock, uint64_t chunk_id, bool *chunk_exists);
85 enum lttng_error_code relayd_get_configuration(struct lttcomm_relayd_sock *sock,
86 uint64_t query_flags,
87 uint64_t& result_flags,
88 uint64_t *supported_trace_format);
89
90 #endif /* _RELAYD_H */
This page took 0.036007 seconds and 6 git commands to generate.