Make the consumer sends a ACK after each command
[lttng-tools.git] / src / bin / lttng-sessiond / kernel-consumer.c
index 825121382529fcd3d8504ee3aeead9403cef838a..2a9bf9983d937223e5131ed5c0d374599c052000 100644 (file)
@@ -31,7 +31,8 @@
 /*
  * Sending a single channel to the consumer with command ADD_CHANNEL.
  */
-int kernel_consumer_add_channel(int sock, struct ltt_kernel_channel *channel)
+int kernel_consumer_add_channel(struct consumer_socket *sock,
+               struct ltt_kernel_channel *channel)
 {
        int ret;
        struct lttcomm_consumer_msg lkm;
@@ -48,7 +49,8 @@ int kernel_consumer_add_channel(int sock, struct ltt_kernel_channel *channel)
                        channel->fd,
                        channel->channel->attr.subbuf_size,
                        0, /* Kernel */
-                       channel->channel->name);
+                       channel->channel->name,
+                       channel->stream_count);
 
        ret = consumer_send_channel(sock, &lkm);
        if (ret < 0) {
@@ -62,7 +64,8 @@ error:
 /*
  * Sending metadata to the consumer with command ADD_CHANNEL and ADD_STREAM.
  */
-int kernel_consumer_add_metadata(int sock, struct ltt_kernel_session *session)
+int kernel_consumer_add_metadata(struct consumer_socket *sock,
+               struct ltt_kernel_session *session)
 {
        int ret;
        char tmp_path[PATH_MAX];
@@ -73,6 +76,7 @@ int kernel_consumer_add_metadata(int sock, struct ltt_kernel_session *session)
        /* Safety net */
        assert(session);
        assert(session->consumer);
+       assert(sock);
 
        DBG("Sending metadata %d to kernel consumer", session->metadata_stream_fd);
 
@@ -116,7 +120,8 @@ int kernel_consumer_add_metadata(int sock, struct ltt_kernel_session *session)
                        session->metadata->fd,
                        session->metadata->conf->attr.subbuf_size,
                        0, /* for kernel */
-                       "metadata");
+                       "metadata",
+                       1);
 
        ret = consumer_send_channel(sock, &lkm);
        if (ret < 0) {
@@ -136,7 +141,8 @@ int kernel_consumer_add_metadata(int sock, struct ltt_kernel_session *session)
                        consumer->net_seq_index,
                        1, /* Metadata flag set */
                        "metadata",
-                       pathname);
+                       pathname,
+                       session->id);
 
        /* Send stream and file descriptor */
        ret = consumer_send_stream(sock, consumer, &lkm,
@@ -152,8 +158,9 @@ error:
 /*
  * Sending a single stream to the consumer with command ADD_STREAM.
  */
-int kernel_consumer_add_stream(int sock, struct ltt_kernel_channel *channel,
-               struct ltt_kernel_stream *stream, struct ltt_kernel_session *session)
+int kernel_consumer_add_stream(struct consumer_socket *sock,
+               struct ltt_kernel_channel *channel, struct ltt_kernel_stream *stream,
+               struct ltt_kernel_session *session)
 {
        int ret;
        char tmp_path[PATH_MAX];
@@ -165,6 +172,7 @@ int kernel_consumer_add_stream(int sock, struct ltt_kernel_channel *channel,
        assert(stream);
        assert(session);
        assert(session->consumer);
+       assert(sock);
 
        DBG("Sending stream %d of channel %s to kernel consumer",
                        stream->fd, channel->channel->name);
@@ -205,7 +213,8 @@ int kernel_consumer_add_stream(int sock, struct ltt_kernel_channel *channel,
                        consumer->net_seq_index,
                        0, /* Metadata flag unset */
                        stream->name,
-                       pathname);
+                       pathname,
+                       session->id);
 
        /* Send stream and file descriptor */
        ret = consumer_send_stream(sock, consumer, &lkm, &stream->fd, 1);
@@ -220,7 +229,7 @@ error:
 /*
  * Send all stream fds of kernel channel to the consumer.
  */
-int kernel_consumer_send_channel_stream(int sock,
+int kernel_consumer_send_channel_stream(struct consumer_socket *sock,
                struct ltt_kernel_channel *channel, struct ltt_kernel_session *session)
 {
        int ret;
@@ -230,6 +239,7 @@ int kernel_consumer_send_channel_stream(int sock,
        assert(channel);
        assert(session);
        assert(session->consumer);
+       assert(sock);
 
        /* Bail out if consumer is disabled */
        if (!session->consumer->enabled) {
@@ -265,7 +275,8 @@ error:
 /*
  * Send all stream fds of the kernel session to the consumer.
  */
-int kernel_consumer_send_session(int sock, struct ltt_kernel_session *session)
+int kernel_consumer_send_session(struct consumer_socket *sock,
+               struct ltt_kernel_session *session)
 {
        int ret;
        struct ltt_kernel_channel *chan;
@@ -273,6 +284,7 @@ int kernel_consumer_send_session(int sock, struct ltt_kernel_session *session)
        /* Safety net */
        assert(session);
        assert(session->consumer);
+       assert(sock);
 
        /* Bail out if consumer is disabled */
        if (!session->consumer->enabled) {
This page took 0.025846 seconds and 5 git commands to generate.