#include <urcu/list.h>
#include <common/hashtable/hashtable.h>
+#include <common/dynamic-array.h>
#include <lttng/rotation.h>
#include <lttng/location.h>
#include <lttng/lttng-error.h>
struct ltt_ust_session;
+typedef void (*ltt_session_destroy_notifier)(const struct ltt_session *session,
+ void *user_data);
+
/*
* Tracing session list
*
enum lttng_rotation_state rotation_state;
char *last_archived_chunk_name;
LTTNG_OPTIONAL(uint64_t) last_archived_chunk_id;
+ struct lttng_dynamic_array destroy_notifiers;
};
/* Prototypes */
void session_unlock_list(void);
void session_destroy(struct ltt_session *session);
+int session_add_destroy_notifier(struct ltt_session *session,
+ ltt_session_destroy_notifier notifier, void *user_data);
bool session_get(struct ltt_session *session);
void session_put(struct ltt_session *session);
const struct ltt_session *session,
uint16_t *control_port, uint16_t *data_port);
struct lttng_trace_archive_location *session_get_trace_archive_location(
- struct ltt_session *session);
+ const struct ltt_session *session);
struct ltt_session *session_find_by_name(const char *name);
struct ltt_session *session_find_by_id(uint64_t id);
/* Create a new trace chunk object from the session's configuration. */
struct lttng_trace_chunk *session_create_new_trace_chunk(
- struct ltt_session *session,
+ const struct ltt_session *session,
+ const struct consumer_output *consumer_output_override,
const char *session_base_path_override,
const char *chunk_name_override);
* ltt_session itself.
*/
int session_close_trace_chunk(const struct ltt_session *session,
- struct lttng_trace_chunk *trace_chunk);
+ struct lttng_trace_chunk *trace_chunk,
+ const enum lttng_trace_chunk_command_type *close_command);
+
+bool session_output_supports_trace_chunks(const struct ltt_session *session);
#endif /* _LTT_SESSION_H */