Commit | Line | Data |
---|---|---|
0c1b0f77 | 1 | /* |
ab5be9fa | 2 | * Copyright (C) 2019 Jérémie Galarneau <jeremie.galarneau@efficios.com> |
0c1b0f77 | 3 | * |
ab5be9fa | 4 | * SPDX-License-Identifier: GPL-2.0-only |
0c1b0f77 | 5 | * |
0c1b0f77 JG |
6 | */ |
7 | ||
8 | #ifndef SESSIOND_TRACE_CHUNK_REGISTRY_H | |
9 | #define SESSIOND_TRACE_CHUNK_REGISTRY_H | |
10 | ||
c9e313bc | 11 | #include <common/trace-chunk.hpp> |
28f23191 JG |
12 | #include <common/uuid.hpp> |
13 | ||
0c1b0f77 JG |
14 | #include <stdint.h> |
15 | ||
72c696e8 JG |
16 | /* |
17 | * A session trace chunk registry allows the relay daemon to share trace chunks | |
18 | * used by different "relay sessions" when they were created for the same | |
19 | * user-visible session daemon session. Tracing multiple domains (e.g. ust and | |
20 | * kernel) results in per-domain relay sessions being created. | |
21 | * | |
22 | * Sharing trace chunks, and their output directory more specifically, is | |
23 | * essential to properly implement session rotations. The sharing of output | |
24 | * directory handles allows directory renames to be performed once and without | |
25 | * races that would stem from from multiple renames. | |
26 | */ | |
0c1b0f77 JG |
27 | struct sessiond_trace_chunk_registry; |
28 | ||
28f23191 | 29 | struct sessiond_trace_chunk_registry *sessiond_trace_chunk_registry_create(void); |
0c1b0f77 | 30 | |
28f23191 | 31 | void sessiond_trace_chunk_registry_destroy(struct sessiond_trace_chunk_registry *sessiond_registry); |
0c1b0f77 JG |
32 | |
33 | int sessiond_trace_chunk_registry_session_created( | |
28f23191 | 34 | struct sessiond_trace_chunk_registry *sessiond_registry, const lttng_uuid& sessiond_uuid); |
0c1b0f77 JG |
35 | |
36 | int sessiond_trace_chunk_registry_session_destroyed( | |
28f23191 | 37 | struct sessiond_trace_chunk_registry *sessiond_registry, const lttng_uuid& sessiond_uuid); |
0c1b0f77 JG |
38 | |
39 | struct lttng_trace_chunk * | |
28f23191 JG |
40 | sessiond_trace_chunk_registry_publish_chunk(struct sessiond_trace_chunk_registry *sessiond_registry, |
41 | const lttng_uuid& sessiond_uuid, | |
42 | uint64_t session_id, | |
43 | struct lttng_trace_chunk *chunk); | |
44 | ||
45 | struct lttng_trace_chunk *sessiond_trace_chunk_registry_get_anonymous_chunk( | |
46 | struct sessiond_trace_chunk_registry *sessiond_registry, | |
47 | const lttng_uuid& sessiond_uuid, | |
48 | uint64_t session_id); | |
0c1b0f77 JG |
49 | |
50 | struct lttng_trace_chunk * | |
28f23191 JG |
51 | sessiond_trace_chunk_registry_get_chunk(struct sessiond_trace_chunk_registry *sessiond_registry, |
52 | const lttng_uuid& sessiond_uuid, | |
53 | uint64_t session_id, | |
54 | uint64_t chunk_id); | |
0c1b0f77 | 55 | |
6b584c2e | 56 | int sessiond_trace_chunk_registry_chunk_exists( |
28f23191 JG |
57 | struct sessiond_trace_chunk_registry *sessiond_registry, |
58 | const lttng_uuid& sessiond_uuid, | |
59 | uint64_t session_id, | |
60 | uint64_t chunk_id, | |
61 | bool *chunk_exists); | |
6b584c2e | 62 | |
0c1b0f77 | 63 | #endif /* SESSIOND_TRACE_CHUNK_REGISTRY_H */ |