X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fstream.h;h=5030e5d4c47e03291b22102aaef1b50a093bd33a;hb=32d1569c14b4e1efce9099a1e04c338a9c42f1f7;hp=7e2b1334ec9c54e3e3ca3c5229b4e664c31c06b8;hpb=7591bab11eceedc6a0d1e02fd6f85592267a63b5;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/stream.h b/src/bin/lttng-relayd/stream.h index 7e2b1334e..5030e5d4c 100644 --- a/src/bin/lttng-relayd/stream.h +++ b/src/bin/lttng-relayd/stream.h @@ -29,6 +29,7 @@ #include "session.h" #include "stream-fd.h" +#include "tracefile-array.h" /* * Represents a stream in the relay @@ -67,17 +68,25 @@ struct relay_stream { 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. @@ -124,6 +133,7 @@ struct relay_stream { * 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. */ }; @@ -135,7 +145,7 @@ struct relay_stream *stream_create(struct ctf_trace *trace, 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);