Move health into its own common/ static library
[lttng-tools.git] / src / bin / lttng-sessiond / consumer.h
index eaa115333584d88e6edcfa3785b46ec3addf78d3..484d8f7bad90b149c5d72e6571bcc23ff60f6979 100644 (file)
@@ -35,9 +35,10 @@ enum consumer_dst_type {
 struct consumer_socket {
        /*
         * File descriptor. This is just a reference to the consumer data meaning
-        * that every access must be locked and check for a possible invalid value.
+        * that every access must be locked and checked for a possible invalid
+        * value.
         */
-       int *fd;
+       int *fd_ptr;
 
        /*
         * To use this socket (send/recv), this lock MUST be acquired.
@@ -94,8 +95,8 @@ struct consumer_data {
        /*
         * The metadata socket object is handled differently and only created
         * locally in this object thus it's the only reference available in the
-        * session daemon. For that reason, a static variable for the fd is
-        * required and the metadata socket fd points to it.
+        * session daemon. For that reason, a variable for the fd is required and
+        * the metadata socket fd points to it.
         */
        int metadata_fd;
        struct consumer_socket metadata_sock;
@@ -104,7 +105,11 @@ struct consumer_data {
        char err_unix_sock_path[PATH_MAX];
        char cmd_unix_sock_path[PATH_MAX];
 
-       /* communication lock */
+       /*
+        * This lock has two purposes. It protects any change to the consumer
+        * socket and make sure only one thread uses this object for read/write
+        * operations.
+        */
        pthread_mutex_t lock;
 };
 
@@ -158,6 +163,9 @@ struct consumer_output {
         */
        struct lttng_ht *socks;
 
+       /* Tell if this output is used for snapshot. */
+       unsigned int snapshot:1;
+
        union {
                char trace_path[PATH_MAX];
                struct consumer_net net;
@@ -197,7 +205,8 @@ int consumer_send_channel(struct consumer_socket *sock,
                struct lttcomm_consumer_msg *msg);
 int consumer_send_relayd_socket(struct consumer_socket *consumer_sock,
                struct lttcomm_relayd_sock *rsock, struct consumer_output *consumer,
-               enum lttng_stream_type type, uint64_t session_id);
+               enum lttng_stream_type type, uint64_t session_id,
+               char *session_name, char *hostname, int session_live_timer);
 int consumer_send_destroy_relayd(struct consumer_socket *sock,
                struct consumer_output *consumer);
 int consumer_recv_status_reply(struct consumer_socket *sock);
@@ -215,6 +224,7 @@ void consumer_init_ask_channel_comm_msg(struct lttcomm_consumer_msg *msg,
                int overwrite,
                unsigned int switch_timer_interval,
                unsigned int read_timer_interval,
+               unsigned int live_timer_interval,
                int output,
                int type,
                uint64_t session_id,
@@ -250,7 +260,8 @@ void consumer_init_channel_comm_msg(struct lttcomm_consumer_msg *msg,
                int type,
                uint64_t tracefile_size,
                uint64_t tracefile_count,
-               unsigned int monitor);
+               unsigned int monitor,
+               unsigned int live_timer_interval);
 int consumer_is_data_pending(uint64_t session_id,
                struct consumer_output *consumer);
 int consumer_close_metadata(struct consumer_socket *socket,
This page took 0.02642 seconds and 5 git commands to generate.