#include "session.h"
#include "stream-fd.h"
+#include "tracefile-array.h"
/*
* Represents a stream in the relay
uint64_t tracefile_size;
uint64_t tracefile_size_current;
uint64_t tracefile_count;
- uint64_t current_tracefile_id;
- uint64_t current_tracefile_seq; /* Free-running counter. */
- uint64_t oldest_tracefile_seq; /* Free-running counter. */
-
- /* To inform the viewer up to where it can go back in time. */
- uint64_t oldest_tracefile_id;
+ /*
+ * Counts the number of received indexes. The "tag" associated
+ * with an index is taken before incrementing this seqcount.
+ * Therefore, the sequence tag associated with the last index
+ * received is always index_received_seqcount - 1.
+ */
+ uint64_t index_received_seqcount;
- uint64_t total_index_received;
+ /*
+ * Tracefile array is an index of the stream trace files,
+ * indexed by position. It allows keeping track of the oldest
+ * available indexes when overwriting trace files in tracefile
+ * rotation.
+ */
+ struct tracefile_array *tfa;
- bool closed; /* Stream is closed. */
+ bool closed; /* Stream is closed. */
+ bool close_requested; /* Close command has been received. */
/*
* Counts number of indexes in indexes_ht. Redundant info.
* Node of stream within global stream hash table.
*/
struct lttng_ht_node_u64 node;
+ bool in_stream_ht; /* is stream in stream hash table. */
struct rcu_head rcu_node; /* For call_rcu teardown. */
};
struct relay_stream *stream_get_by_id(uint64_t stream_id);
bool stream_get(struct relay_stream *stream);
void stream_put(struct relay_stream *stream);
-void stream_close(struct relay_stream *stream);
+void try_stream_close(struct relay_stream *stream);
void stream_publish(struct relay_stream *stream);
void print_relay_streams(void);