This allows the viewer to quickly know if a session is really active or
just created and idle. Before this patch, we had to attach to a session
to discover the number of streams active in that session.
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
send_session.id = htobe64(session->id);
send_session.live_timer = htobe32(session->live_timer);
send_session.clients = htobe32(session->viewer_attached);
send_session.id = htobe64(session->id);
send_session.live_timer = htobe32(session->live_timer);
send_session.clients = htobe32(session->viewer_attached);
+ send_session.streams = htobe32(session->stream_count);
char session_name[LTTNG_VIEWER_NAME_MAX];
uint32_t live_timer;
uint32_t clients;
char session_name[LTTNG_VIEWER_NAME_MAX];
uint32_t live_timer;
uint32_t clients;
} __attribute__((__packed__));
struct lttng_viewer_stream {
} __attribute__((__packed__));
struct lttng_viewer_stream {
stream = caa_container_of(node, struct relay_stream, stream_n);
if (stream->session == cmd->session) {
destroy_stream(stream);
stream = caa_container_of(node, struct relay_stream, stream_n);
if (stream->session == cmd->session) {
destroy_stream(stream);
+ cmd->session->stream_count--;
+ assert(cmd->session->stream_count >= 0);
lttng_ht_node_init_str(&stream->ctf_trace_node, stream->path_name);
lttng_ht_add_str(cmd->ctf_traces_ht, &stream->ctf_trace_node);
lttng_ht_node_init_str(&stream->ctf_trace_node, stream->path_name);
lttng_ht_add_str(cmd->ctf_traces_ht, &stream->ctf_trace_node);
+ session->stream_count++;
DBG("Relay new stream added %s with ID %" PRIu64, stream->channel_name,
stream->stream_handle);
DBG("Relay new stream added %s with ID %" PRIu64, stream->channel_name,
stream->stream_handle);
stream->last_net_seq_num = be64toh(stream_info.last_net_seq_num);
stream->close_flag = 1;
stream->last_net_seq_num = be64toh(stream_info.last_net_seq_num);
stream->close_flag = 1;
+ session->stream_count--;
+ assert(session->stream_count >= 0);
if (close_stream_check(stream)) {
destroy_stream(stream);
if (close_stream_check(stream)) {
destroy_stream(stream);