uint64_t discarded_events;
/* Total number of missed packets due to overwriting (overwrite). */
uint64_t lost_packets;
+
+ bool streams_sent_to_relayd;
};
/*
* Lock to use the stream FDs since they are used between threads.
*
* This is nested INSIDE the consumer_data lock.
- * This is nested INSIDE the metadata cache lock.
* This is nested INSIDE the channel lock.
* This is nested INSIDE the channel timer lock.
+ * This is nested OUTSIDE the metadata cache lock.
* This is nested OUTSIDE consumer_relayd_sock_pair lock.
*/
pthread_mutex_t lock;
/* Network sequence number. */
uint64_t net_seq_idx;
/* Number of stream associated with this relayd */
- unsigned int refcount;
+ int refcount;
/*
* This flag indicates whether or not we should destroy this object. The
/* Session id on both sides for the sockets. */
uint64_t relayd_session_id;
uint64_t sessiond_session_id;
+ struct lttng_consumer_local_data *ctx;
};
/*
struct lttng_ht *stream_per_chan_id_ht;
};
+/*
+ * Set to nonzero when the consumer is exiting. Updated by signal
+ * handler and thread exit, read by threads.
+ */
+extern volatile int consumer_quit;
+
/*
* Init consumer data structures.
*/
ssize_t lttng_consumer_read_subbuffer(struct lttng_consumer_stream *stream,
struct lttng_consumer_local_data *ctx);
int lttng_consumer_on_recv_stream(struct lttng_consumer_stream *stream);
-int consumer_add_relayd_socket(uint64_t net_seq_idx, int sock_type,
+void consumer_add_relayd_socket(uint64_t net_seq_idx, int sock_type,
struct lttng_consumer_local_data *ctx, int sock,
struct pollfd *consumer_sockpoll, struct lttcomm_relayd_sock *relayd_sock,
uint64_t sessiond_id, uint64_t relayd_session_id);
int consumer_add_metadata_stream(struct lttng_consumer_stream *stream);
void consumer_del_stream_for_metadata(struct lttng_consumer_stream *stream);
int consumer_create_index_file(struct lttng_consumer_stream *stream);
+void lttng_consumer_cleanup_relayd(struct consumer_relayd_sock_pair *relayd);
#endif /* LIB_CONSUMER_H */