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 SM |
11 | #include <common/uuid.hpp> |
12 | #include <common/trace-chunk.hpp> | |
0c1b0f77 JG |
13 | #include <stdint.h> |
14 | ||
72c696e8 JG |
15 | /* |
16 | * A session trace chunk registry allows the relay daemon to share trace chunks | |
17 | * used by different "relay sessions" when they were created for the same | |
18 | * user-visible session daemon session. Tracing multiple domains (e.g. ust and | |
19 | * kernel) results in per-domain relay sessions being created. | |
20 | * | |
21 | * Sharing trace chunks, and their output directory more specifically, is | |
22 | * essential to properly implement session rotations. The sharing of output | |
23 | * directory handles allows directory renames to be performed once and without | |
24 | * races that would stem from from multiple renames. | |
25 | */ | |
0c1b0f77 JG |
26 | struct sessiond_trace_chunk_registry; |
27 | ||
28 | struct sessiond_trace_chunk_registry * | |
29 | sessiond_trace_chunk_registry_create(void); | |
30 | ||
31 | void sessiond_trace_chunk_registry_destroy( | |
32 | struct sessiond_trace_chunk_registry *sessiond_registry); | |
33 | ||
34 | int sessiond_trace_chunk_registry_session_created( | |
35 | struct sessiond_trace_chunk_registry *sessiond_registry, | |
36 | const lttng_uuid sessiond_uuid); | |
37 | ||
38 | int sessiond_trace_chunk_registry_session_destroyed( | |
39 | struct sessiond_trace_chunk_registry *sessiond_registry, | |
40 | const lttng_uuid sessiond_uuid); | |
41 | ||
42 | struct lttng_trace_chunk *sessiond_trace_chunk_registry_publish_chunk( | |
43 | struct sessiond_trace_chunk_registry *sessiond_registry, | |
44 | const lttng_uuid sessiond_uuid, uint64_t session_id, | |
45 | struct lttng_trace_chunk *chunk); | |
46 | ||
47 | struct lttng_trace_chunk * | |
48 | sessiond_trace_chunk_registry_get_anonymous_chunk( | |
49 | struct sessiond_trace_chunk_registry *sessiond_registry, | |
50 | const lttng_uuid sessiond_uuid, | |
51 | uint64_t session_id); | |
52 | ||
53 | struct lttng_trace_chunk * | |
54 | sessiond_trace_chunk_registry_get_chunk( | |
55 | struct sessiond_trace_chunk_registry *sessiond_registry, | |
56 | const lttng_uuid sessiond_uuid, | |
57 | uint64_t session_id, uint64_t chunk_id); | |
58 | ||
6b584c2e JG |
59 | int sessiond_trace_chunk_registry_chunk_exists( |
60 | struct sessiond_trace_chunk_registry *sessiond_registry, | |
61 | const lttng_uuid sessiond_uuid, | |
62 | uint64_t session_id, uint64_t chunk_id, bool *chunk_exists); | |
63 | ||
0c1b0f77 | 64 | #endif /* SESSIOND_TRACE_CHUNK_REGISTRY_H */ |