Size-based rotation
[lttng-tools.git] / src / bin / lttng-sessiond / session.h
index 3b3380c3f4d8f5ec112baedab274969f59765cee..ab9b1a9a4355edf8aa98ecb29d7350802d96fb26 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>
@@ -127,8 +128,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 +167,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 */
This page took 0.025996 seconds and 5 git commands to generate.