#include <lttng/constant.h>
#include <common/hashtable/hashtable.h>
+#include <common/compat/uuid.h>
+#include <common/trace-chunk.h>
/*
* Represents a session for the relay point of view
* It is used to match a set of streams to their session.
*/
uint64_t id;
+ lttng_uuid sessiond_uuid;
char session_name[LTTNG_NAME_MAX];
- char hostname[HOST_NAME_MAX];
+ char hostname[LTTNG_HOST_NAME_MAX];
uint32_t live_timer;
/* Session in snapshot mode. */
*/
struct urcu_ref ref;
- /* session reflock nests inside ctf_trace reflock. */
- pthread_mutex_t reflock;
pthread_mutex_t lock;
/* Tell if the session connection has been closed on the streaming side. */
bool connection_closed;
+ /*
+ * Tell if the session is currently living in a exiting relayd and
+ * should be cleaned forcefully without waiting for pending data or
+ * pending ctrl data.
+ */
+ bool aborted;
+
/* Contains ctf_trace object of that session indexed by path name. */
struct lttng_ht *ctf_traces_ht;
* session_list_lock. Traversals are protected by RCU.
*/
struct cds_list_head viewer_session_node;
+ struct lttng_trace_chunk *current_trace_chunk;
struct rcu_head rcu_node; /* For call_rcu teardown. */
};
struct relay_session *session_create(const char *session_name,
const char *hostname, uint32_t live_timer,
- bool snapshot, uint32_t major, uint32_t minor);
+ bool snapshot, const lttng_uuid sessiond_uuid,
+ uint32_t major, uint32_t minor);
struct relay_session *session_get_by_id(uint64_t id);
bool session_get(struct relay_session *session);
void session_put(struct relay_session *session);
int session_close(struct relay_session *session);
+int session_abort(struct relay_session *session);
+
void print_sessions(void);
#endif /* _SESSION_H */