Add filter sequence number to UST
[lttng-tools.git] / src / bin / lttng-sessiond / ust-consumer.c
index b7e0d359261dbdec4a686a893dbb3a0416ea04ac..465dd07d74489cd26135126f903e1a30aa6070a2 100644 (file)
@@ -52,7 +52,8 @@ static int send_channel(int sock, struct ust_app_channel *uchan)
                        uchan->obj->shm_fd,
                        uchan->attr.subbuf_size,
                        uchan->obj->memory_map_size,
-                       uchan->name);
+                       uchan->name,
+                       uchan->streams.count);
 
        ret = consumer_send_channel(sock, &msg);
        if (ret < 0) {
@@ -100,7 +101,8 @@ static int send_channel_stream(int sock, struct ust_app_channel *uchan,
                        consumer->net_seq_index,
                        0, /* Metadata flag unset */
                        stream->name,
-                       pathname);
+                       pathname,
+                       usess->id);
 
        /* Send stream and file descriptor */
        fds[0] = stream->obj->shm_fd;
@@ -136,8 +138,8 @@ static int send_channel_streams(int sock,
        /* Get the right path name destination */
        if (consumer->type == CONSUMER_DST_LOCAL) {
                /* Set application path to the destination path */
-               ret = snprintf(tmp_path, sizeof(tmp_path), "%s/%s",
-                               consumer->dst.trace_path, usess->path);
+               ret = snprintf(tmp_path, sizeof(tmp_path), "%s/%s/%s",
+                               consumer->dst.trace_path, consumer->subdir, usess->path);
                if (ret < 0) {
                        PERROR("snprintf stream path");
                        goto error;
@@ -208,7 +210,8 @@ static int send_metadata(int sock, struct ust_app_session *usess,
                        usess->metadata->obj->shm_fd,
                        usess->metadata->attr.subbuf_size,
                        usess->metadata->obj->memory_map_size,
-                       "metadata");
+                       "metadata",
+                       1);
 
        ret = consumer_send_channel(sock, &msg);
        if (ret < 0) {
@@ -225,8 +228,8 @@ static int send_metadata(int sock, struct ust_app_session *usess,
        /* Get correct path name destination */
        if (consumer->type == CONSUMER_DST_LOCAL) {
                /* Set application path to the destination path */
-               ret = snprintf(tmp_path, sizeof(tmp_path), "%s/%s",
-                               consumer->dst.trace_path, usess->path);
+               ret = snprintf(tmp_path, sizeof(tmp_path), "%s/%s/%s",
+                               consumer->dst.trace_path, consumer->subdir, usess->path);
                if (ret < 0) {
                        PERROR("snprintf stream path");
                        goto error;
@@ -264,7 +267,8 @@ static int send_metadata(int sock, struct ust_app_session *usess,
                        consumer->net_seq_index,
                        1, /* Flag metadata set */
                        "metadata",
-                       pathname);
+                       pathname,
+                       usess->id);
 
        /* Send stream and file descriptor */
        fds[0] = usess->metadata->stream_obj->shm_fd;
@@ -289,8 +293,12 @@ int ust_consumer_send_session(struct ust_app_session *usess,
        struct ust_app_channel *ua_chan;
 
        assert(usess);
-       assert(consumer);
-       assert(sock);
+
+       if (consumer == NULL || sock == NULL) {
+               /* There is no consumer so just ignoring the command. */
+               DBG("UST consumer does not exist. Not sending streams");
+               return 0;
+       }
 
        DBG("Sending metadata stream fd to consumer on %d", sock->fd);
 
This page took 0.024293 seconds and 4 git commands to generate.