X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.h;h=830514659772b0afa6bb5de1ad7be678e033dcfb;hb=5922e6c21e0ad1a5050b2440bcc14f15abd9c5f4;hp=87ba490d7500af8ea078cec6ab652495ab5c91d5;hpb=74251bb8269c4609c776e28fcd137628225e6ca7;p=lttng-tools.git diff --git a/src/common/consumer.h b/src/common/consumer.h index 87ba490d7..830514659 100644 --- a/src/common/consumer.h +++ b/src/common/consumer.h @@ -129,7 +129,19 @@ struct lttng_consumer_stream { unsigned int metadata_flag; /* Used when the stream is set for network streaming */ uint64_t relayd_stream_id; - /* Next sequence number to use for trace packet */ + /* + * When sending a stream packet to a relayd, this number is used to track + * the packet sent by the consumer and seen by the relayd. When sending the + * data header to the relayd, this number is sent and if the transmission + * was successful, it is incremented. + * + * Even if the full data is not fully transmitted it won't matter since + * only two possible error can happen after that where either the relayd + * died or a read error is detected on the stream making this value useless + * after that. + * + * This value SHOULD be read/updated atomically or with the lock acquired. + */ uint64_t next_net_seq_num; /* * Lock to use the stream FDs since they are used between threads. @@ -186,6 +198,10 @@ struct consumer_relayd_sock_pair { */ struct lttcomm_sock data_sock; struct lttng_ht_node_ulong node; + + /* Session id on both sides for the sockets. */ + uint64_t relayd_session_id; + uint64_t sessiond_session_id; }; /* @@ -412,9 +428,11 @@ ssize_t lttng_consumer_read_subbuffer(struct lttng_consumer_stream *stream, int lttng_consumer_on_recv_stream(struct lttng_consumer_stream *stream); int consumer_add_relayd_socket(int net_seq_idx, int sock_type, struct lttng_consumer_local_data *ctx, int sock, - struct pollfd *consumer_sockpoll, struct lttcomm_sock *relayd_sock); + struct pollfd *consumer_sockpoll, struct lttcomm_sock *relayd_sock, + unsigned int sessiond_id); void consumer_flag_relayd_for_destroy( struct consumer_relayd_sock_pair *relayd); int consumer_data_pending(uint64_t id); +int consumer_send_status_msg(int sock, int ret_code); #endif /* LIB_CONSUMER_H */