Commit | Line | Data |
---|---|---|
3e3665b8 | 1 | /* |
ab5be9fa | 2 | * Copyright (C) 2019 Jérémie Galarneau <jeremie.galarneau@efficios.com> |
3e3665b8 | 3 | * |
ab5be9fa | 4 | * SPDX-License-Identifier: LGPL-2.1-only |
3e3665b8 | 5 | * |
3e3665b8 JG |
6 | */ |
7 | ||
8 | #ifndef LTTNG_DESTRUCTION_HANDLE_H | |
9 | #define LTTNG_DESTRUCTION_HANDLE_H | |
10 | ||
3e3665b8 | 11 | #include <lttng/lttng-error.h> |
4bd69c5f | 12 | #include <lttng/lttng-export.h> |
28f23191 | 13 | #include <lttng/rotation.h> |
3e3665b8 JG |
14 | |
15 | #ifdef __cplusplus | |
16 | extern "C" { | |
17 | #endif | |
18 | ||
f16ab844 JG |
19 | /* |
20 | * Handle used to represent a specific instance of session destruction | |
21 | * operation. | |
22 | * | |
23 | * See lttng_destroy_session_ext() in lttng/session.h. | |
24 | */ | |
3e3665b8 JG |
25 | struct lttng_destruction_handle; |
26 | ||
f16ab844 JG |
27 | /* |
28 | * Negative values indicate errors. Values >= 0 indicate success. | |
29 | */ | |
3e3665b8 | 30 | enum lttng_destruction_handle_status { |
f16ab844 | 31 | /* Generic error. */ |
3e3665b8 | 32 | LTTNG_DESTRUCTION_HANDLE_STATUS_ERROR = -2, |
f16ab844 | 33 | /* Invalid parameters provided */ |
3e3665b8 | 34 | LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID = -1, |
f16ab844 | 35 | /* Success. */ |
3e3665b8 | 36 | LTTNG_DESTRUCTION_HANDLE_STATUS_OK = 0, |
f16ab844 | 37 | /* Destruction operation completed successfully. */ |
3e3665b8 | 38 | LTTNG_DESTRUCTION_HANDLE_STATUS_COMPLETED = 1, |
f16ab844 | 39 | /* Operation timed out. */ |
3e3665b8 JG |
40 | LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT = 2, |
41 | }; | |
42 | ||
f16ab844 JG |
43 | /* |
44 | * Destroy an lttng_destruction_session handle. | |
45 | * The handle should be discarded after this call. | |
46 | */ | |
28f23191 | 47 | LTTNG_EXPORT extern void lttng_destruction_handle_destroy(struct lttng_destruction_handle *handle); |
3e3665b8 | 48 | |
f16ab844 JG |
49 | /* |
50 | * Wait for the destruction of a session to complete. | |
51 | * | |
52 | * A negative timeout_ms value can be used to wait indefinitely. | |
53 | * | |
54 | * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_COMPLETED if the session destruction | |
55 | * operation was completed. LTTNG_DESTRUCTION_HANDLE_STATUS_TIMEOUT is returned | |
56 | * to indicate that the wait timed out. | |
57 | * On error, one of the negative lttng_destruction_handle_status is returned. | |
58 | * | |
59 | * Note: This function returning a success status does not mean that | |
60 | * the destruction operation itself succeeded; it indicates that the _wait_ | |
61 | * operation completed successfully. | |
62 | */ | |
4bd69c5f | 63 | LTTNG_EXPORT extern enum lttng_destruction_handle_status |
28f23191 JG |
64 | lttng_destruction_handle_wait_for_completion(struct lttng_destruction_handle *handle, |
65 | int timeout_ms); | |
3e3665b8 | 66 | |
f16ab844 JG |
67 | /* |
68 | * Get the result of a session destruction operation. | |
69 | * | |
70 | * This function must be used on a session destruction handle which was | |
71 | * successfully waited on. | |
72 | * | |
73 | * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_OK if the result of the session | |
74 | * destruction operation could be obtained. Check the value of 'result' to | |
75 | * determine if the destruction of the session completed successfully or not. | |
76 | * | |
77 | * On error, one of the negative lttng_destruction_handle_status is returned. | |
78 | * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID if the session destruction | |
79 | * was not waited-on using the handle or if the arguments of the function are | |
80 | * invalid (e.g. NULL). | |
81 | */ | |
4bd69c5f | 82 | LTTNG_EXPORT extern enum lttng_destruction_handle_status |
28f23191 JG |
83 | lttng_destruction_handle_get_result(const struct lttng_destruction_handle *handle, |
84 | enum lttng_error_code *result); | |
3e3665b8 | 85 | |
f16ab844 JG |
86 | /* |
87 | * Get the status of the session rotation performed as part of the session's | |
88 | * destruction. | |
89 | * | |
90 | * A session will perform a final rotation if it was ever rotated over its | |
91 | * lifetime. If this happens, this function returns the state of the rotation | |
92 | * that was performed. | |
93 | * | |
94 | * This function must be used on a session destruction handle which was | |
95 | * successfully waited on. | |
96 | * | |
97 | * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_OK if the state of the session | |
98 | * rotation could be obtained. Check the value of 'rotation_state' to | |
99 | * determine if the rotation of the session completed successfully or not. | |
100 | * | |
101 | * On error, one of the negative lttng_destruction_handle_status is returned. | |
102 | * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID if the session destruction | |
103 | * was not waited-on using the handle or if the arguments of the function are | |
104 | * invalid (e.g. NULL). | |
105 | * | |
106 | * Note that if no rotation was performed, rotation_state will be set to | |
107 | * LTTNG_ROTATION_STATE_NO_ROTATION. | |
108 | */ | |
4bd69c5f | 109 | LTTNG_EXPORT extern enum lttng_destruction_handle_status |
28f23191 JG |
110 | lttng_destruction_handle_get_rotation_state(const struct lttng_destruction_handle *handle, |
111 | enum lttng_rotation_state *rotation_state); | |
3e3665b8 | 112 | |
f16ab844 JG |
113 | /* |
114 | * Get the location of the archive resulting from the rotation performed during | |
115 | * the session's destruction. | |
116 | * | |
117 | * This function must be used on a session destruction handle which was | |
118 | * successfully waited on and a session rotation must have been be completed | |
119 | * successfully in order for this call to succeed. | |
120 | * | |
121 | * The location returned remains owned by the session destruction handle. | |
122 | * | |
123 | * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_OK if the location of the archive | |
124 | * resulting from the session rotation could be obtained. | |
125 | * | |
126 | * On error, one of the negative lttng_destruction_handle_status is returned. | |
127 | * Returns LTTNG_DESTRUCTION_HANDLE_STATUS_INVALID if the session destruction | |
128 | * was not waited-on using the handle, if no session rotation occurred as part | |
129 | * of the session's destruction, or if the arguments of the function are | |
130 | * invalid (e.g. NULL). | |
131 | */ | |
4bd69c5f | 132 | LTTNG_EXPORT extern enum lttng_destruction_handle_status |
28f23191 JG |
133 | lttng_destruction_handle_get_archive_location(const struct lttng_destruction_handle *handle, |
134 | const struct lttng_trace_archive_location **location); | |
3e3665b8 | 135 | |
4da7eebd JG |
136 | #ifdef __cplusplus |
137 | } | |
138 | #endif | |
139 | ||
3e3665b8 | 140 | #endif /* LTTNG_DESTRUCTION_HANDLE_H */ |