lttng-live: populate trace name
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 5 Jun 2017 21:25:11 +0000 (17:25 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 9 Jun 2017 21:02:58 +0000 (17:02 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
plugins/ctf/lttng-live/lttng-live-internal.h
plugins/ctf/lttng-live/lttng-live.c
plugins/ctf/lttng-live/metadata.c
plugins/ctf/lttng-live/metadata.h
plugins/ctf/lttng-live/viewer-connection.c

index 115ac76b2eef36de595b225f484618d534cdd70c..9aec9f7bf771e500b69ada809cde3ce89a0da540 100644 (file)
@@ -157,6 +157,9 @@ struct lttng_live_session {
 
        struct lttng_live_component *lttng_live;
 
+       GString *hostname;
+       GString *session_name;
+
        uint64_t id;
 
        /* List of struct lttng_live_trace */
@@ -237,7 +240,10 @@ int lttng_live_detach_session(struct lttng_live_session *session);
 enum bt_ctf_lttng_live_iterator_status lttng_live_get_new_streams(
                struct lttng_live_session *session);
 
-int lttng_live_add_session(struct lttng_live_component *lttng_live, uint64_t session_id);
+int lttng_live_add_session(struct lttng_live_component *lttng_live,
+               uint64_t session_id,
+               const char *hostname,
+               const char *session_name);
 
 ssize_t lttng_live_get_one_metadata_packet(struct lttng_live_trace *trace,
                FILE *fp);
index 33cd94a00280d6480ed6cce397594b526514fb76..4954a3c93033528825157c84a8def4929de515a5 100644 (file)
@@ -233,7 +233,9 @@ void lttng_live_close_trace_streams(struct lttng_live_trace *trace)
 }
 
 BT_HIDDEN
-int lttng_live_add_session(struct lttng_live_component *lttng_live, uint64_t session_id)
+int lttng_live_add_session(struct lttng_live_component *lttng_live,
+               uint64_t session_id, const char *hostname,
+               const char *session_name)
 {
        int ret = 0;
        struct lttng_live_session *s;
@@ -247,8 +249,11 @@ int lttng_live_add_session(struct lttng_live_component *lttng_live, uint64_t ses
        BT_INIT_LIST_HEAD(&s->traces);
        s->lttng_live = lttng_live;
        s->new_streams_needed = true;
+       s->hostname = g_string_new(hostname);
+       s->session_name = g_string_new(session_name);
 
-       BT_LOGI("Reading from session %" PRIu64, s->id);
+       BT_LOGI("Reading from session: %" PRIu64 " hostname: %s session_name: %s",
+               s->id, hostname, session_name);
        bt_list_add(&s->node, &lttng_live->sessions);
        goto end;
 error:
@@ -279,6 +284,12 @@ void lttng_live_destroy_session(struct lttng_live_session *session)
                lttng_live_close_trace_streams(trace);
        }
        bt_list_del(&session->node);
+       if (session->hostname) {
+               g_string_free(session->hostname, TRUE);
+       }
+       if (session->session_name) {
+               g_string_free(session->session_name, TRUE);
+       }
        g_free(session);
 }
 
index b71a42a535632430147049b7116385be9de44d82..fcdb247e6eb2d4374e076adf25f385846b34acbf 100644 (file)
@@ -229,10 +229,12 @@ end:
 BT_HIDDEN
 int lttng_live_metadata_create_stream(struct lttng_live_session *session,
                uint64_t ctf_trace_id,
-               uint64_t stream_id)
+               uint64_t stream_id,
+               const char *trace_name)
 {
        struct lttng_live_metadata *metadata = NULL;
        struct lttng_live_trace *trace;
+       const char *match;
 
        metadata = g_new0(struct lttng_live_metadata, 1);
        if (!metadata) {
@@ -240,9 +242,12 @@ int lttng_live_metadata_create_stream(struct lttng_live_session *session,
        }
        metadata->stream_id = stream_id;
        //TODO: add clock offset option
-       //TODO: add (preferably unique) trace's name
+       match = strstr(trace_name, session->session_name->str);
+       if (!match) {
+               goto error;
+       }
        metadata->decoder = ctf_metadata_decoder_create(stderr, 0,
-               "lttng-live");
+               match);
        if (!metadata->decoder) {
                goto error;
        }
index 3d9f7b8612de6187ba1fabf4a0549f24326224b7..47e4fbb27edc8eba11c69a24d8114de731683ae6 100644 (file)
@@ -30,8 +30,8 @@
 #include "lttng-live-internal.h"
 
 int lttng_live_metadata_create_stream(struct lttng_live_session *session,
-               uint64_t ctf_trace_id,
-                uint64_t stream_id);
+               uint64_t ctf_trace_id, uint64_t stream_id,
+               const char *trace_name);
 
 enum bt_ctf_lttng_live_iterator_status lttng_live_metadata_update(
                struct lttng_live_trace *trace);
index 9f61f160162842afaa14a37e6962acc9300ec992..81f043facbb566208a0aec62ab686f31de3679fd 100644 (file)
@@ -671,12 +671,17 @@ int lttng_live_query_session_ids(struct lttng_live_component *lttng_live)
                lsession.session_name[LTTNG_VIEWER_NAME_MAX - 1] = '\0';
                session_id = be64toh(lsession.id);
 
+               BT_LOGD("Adding session %" PRIu64 " hostname: %s session_name: %s",
+                       session_id, lsession.hostname, lsession.session_name);
+
                if ((strncmp(lsession.session_name,
                        viewer_connection->session_name->str,
                        MAXNAMLEN) == 0) && (strncmp(lsession.hostname,
                                viewer_connection->target_hostname->str,
                                MAXNAMLEN) == 0)) {
-                       if (lttng_live_add_session(lttng_live, session_id)) {
+                       if (lttng_live_add_session(lttng_live, session_id,
+                                       lsession.hostname,
+                                       lsession.session_name)) {
                                goto error;
                        }
                }
@@ -771,7 +776,8 @@ int receive_streams(struct lttng_live_session *session,
                                        stream_id, stream.path_name,
                                        stream.channel_name);
                        if (lttng_live_metadata_create_stream(session,
-                                       ctf_trace_id, stream_id)) {
+                                       ctf_trace_id, stream_id,
+                                       stream.path_name)) {
                                BT_LOGE("Error creating metadata stream");
 
                                goto error;
This page took 0.030079 seconds and 4 git commands to generate.