Extend the rotation API to provide network trace archive locations
[lttng-tools.git] / src / bin / lttng-sessiond / session.h
index 3b3380c3f4d8f5ec112baedab274969f59765cee..b8c7890810ab966d23860805cabfff5be62426e9 100644 (file)
@@ -19,6 +19,7 @@
 #define _LTT_SESSION_H
 
 #include <limits.h>
+#include <stdbool.h>
 #include <urcu/list.h>
 
 #include <common/hashtable/hashtable.h>
@@ -26,6 +27,7 @@
 
 #include "snapshot.h"
 #include "trace-kernel.h"
+#include "consumer.h"
 
 struct ltt_ust_session;
 
@@ -127,8 +129,12 @@ struct ltt_session {
         * rotate_pending_relay.
         */
        bool rotate_pending;
-       /* Current status of a rotation. */
-       enum lttng_rotation_status rotation_status;
+       /*
+        * True until the relay has finished the rotation of all the streams.
+        */
+       bool rotate_pending_relay;
+       /* Current state of a rotation. */
+       enum lttng_rotation_state rotation_state;
        /*
         * Number of channels waiting for a rotation.
         * When this number reaches 0, we can handle the rename of the chunk
@@ -162,6 +168,30 @@ struct ltt_session {
         * with the current timestamp.
         */
        time_t current_chunk_start_ts;
+       /*
+        * Timer to check periodically if a relay has completed the last
+        * rotation.
+        */
+       bool rotate_relay_pending_timer_enabled;
+       timer_t rotate_relay_pending_timer;
+       /* Timer to periodically rotate a session. */
+       bool rotate_timer_enabled;
+       timer_t rotate_timer;
+       uint64_t rotate_timer_period;
+       /* Value for size-based rotation, 0 if disabled. */
+       uint64_t rotate_size;
+       /*
+        * Keep a state if this session was rotated after the last stop command.
+        * We only allow one rotation after a stop. At destroy, we also need to
+        * know if a rotation occured since the last stop to rename the current
+        * chunk.
+        */
+       bool rotated_after_last_stop;
+       /*
+        * Condition and trigger for size-based rotations.
+        */
+       struct lttng_condition *rotate_condition;
+       struct lttng_trigger *rotate_trigger;
 };
 
 /* Prototypes */
@@ -173,6 +203,14 @@ void session_lock_list(void);
 void session_unlock(struct ltt_session *session);
 void session_unlock_list(void);
 
+enum consumer_dst_type session_get_consumer_destination_type(
+               const struct ltt_session *session);
+const char *session_get_net_consumer_hostname(
+               const struct ltt_session *session);
+void session_get_net_consumer_ports(
+               const struct ltt_session *session,
+               uint16_t *control_port, uint16_t *data_port);
+
 struct ltt_session *session_find_by_name(const char *name);
 struct ltt_session *session_find_by_id(uint64_t id);
 struct ltt_session_list *session_get_list(void);
This page took 0.025511 seconds and 5 git commands to generate.