X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Flttng-relayd.h;h=d0e0473b2bb8ed5e7ec355da6666e808b5e93ff7;hp=bb5b7a365aaae214a10bd3757e34f1074ce4e81f;hb=a4baae1b0463bc4ce65c2a458c4a941e7fabc594;hpb=8966b2b03f62a03e132f504853e9699152e9399b diff --git a/src/bin/lttng-relayd/lttng-relayd.h b/src/bin/lttng-relayd/lttng-relayd.h index bb5b7a365..d0e0473b2 100644 --- a/src/bin/lttng-relayd/lttng-relayd.h +++ b/src/bin/lttng-relayd/lttng-relayd.h @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -44,6 +45,16 @@ enum connection_type { RELAY_VIEWER_NOTIFICATION = 4, }; +/* + * When we receive a stream, it gets stored in a list (on a per connection + * basis) until we have all the streams of the same channel and the metadata + * associated with it, then it gets flagged with viewer_ready. + */ +struct relay_stream_recv_handle { + uint64_t id; /* stream handle */ + struct cds_list_head node; +}; + /* * Represents a session for the relay point of view */ @@ -144,6 +155,11 @@ struct relay_stream { * update the oldest_tracefile_id. */ unsigned int tracefile_overwrite:1; + /* + * Can this stream be used by a viewer or are we waiting for additional + * information. + */ + unsigned int viewer_ready:1; }; /* @@ -200,12 +216,13 @@ struct relay_command { struct lttng_ht_node_ulong sock_n; struct rcu_head rcu_node; enum connection_type type; - unsigned int version_check_done:1; /* protocol version to use for this session */ uint32_t major; uint32_t minor; struct lttng_ht *ctf_traces_ht; /* indexed by path name */ uint64_t session_id; + struct cds_list_head recv_head; + unsigned int version_check_done:1; }; struct relay_local_data {