sessiond: transition from lttng-ust to tracer agnostic API
[lttng-tools.git] / src / bin / lttng-sessiond / ust-consumer.cpp
index 86b96a9bd5e9505002e0413da7970dd9d30520ee..9098f9cd33250b5496e317dfaad7eaf123386488 100644 (file)
@@ -25,6 +25,8 @@
 #include "session.hpp"
 #include "lttng-sessiond.hpp"
 
+namespace lsu = lttng::sessiond::ust;
+
 /*
  * Send a single channel to the consumer using command ASK_CHANNEL_CREATION.
  *
@@ -34,7 +36,7 @@ static int ask_channel_creation(struct ust_app_session *ua_sess,
                struct ust_app_channel *ua_chan,
                struct consumer_output *consumer,
                struct consumer_socket *socket,
-               struct ust_registry_session *registry,
+               ust_registry_session *registry,
                struct lttng_trace_chunk *trace_chunk)
 {
        int ret, output;
@@ -42,7 +44,6 @@ static int ask_channel_creation(struct ust_app_session *ua_sess,
        uint64_t key, chan_reg_key;
        char *pathname = NULL;
        struct lttcomm_consumer_msg msg;
-       struct ust_registry_channel *ust_reg_chan;
        char shm_path[PATH_MAX] = "";
        char root_shm_path[PATH_MAX] = "";
        bool is_local_trace;
@@ -105,9 +106,13 @@ static int ask_channel_creation(struct ust_app_session *ua_sess,
                 * those buffer files.
                 */
        } else {
-               ust_reg_chan = ust_registry_channel_find(registry, chan_reg_key);
-               LTTNG_ASSERT(ust_reg_chan);
-               chan_id = ust_reg_chan->chan_id;
+               {
+                       auto locked_registry = registry->lock();
+                       auto& ust_reg_chan = registry->get_channel(chan_reg_key);
+
+                       chan_id = ust_reg_chan.id;
+               }
+
                if (ua_sess->shm_path[0]) {
                        strncpy(shm_path, ua_sess->shm_path, sizeof(shm_path));
                        shm_path[sizeof(shm_path) - 1] = '\0';
@@ -196,7 +201,7 @@ int ust_consumer_ask_channel(struct ust_app_session *ua_sess,
                struct ust_app_channel *ua_chan,
                struct consumer_output *consumer,
                struct consumer_socket *socket,
-               struct ust_registry_session *registry,
+               ust_registry_session *registry,
                struct lttng_trace_chunk * trace_chunk)
 {
        int ret;
@@ -445,7 +450,7 @@ int ust_consumer_metadata_request(struct consumer_socket *socket)
        ssize_t ret_push;
        struct lttcomm_metadata_request_msg request;
        struct buffer_reg_uid *reg_uid;
-       struct ust_registry_session *ust_reg;
+       ust_registry_session *ust_reg;
        struct lttcomm_consumer_msg msg;
 
        LTTNG_ASSERT(socket);
@@ -493,9 +498,10 @@ int ust_consumer_metadata_request(struct consumer_socket *socket)
        }
        LTTNG_ASSERT(ust_reg);
 
-       pthread_mutex_lock(&ust_reg->lock);
-       ret_push = ust_app_push_metadata(ust_reg, socket, 1);
-       pthread_mutex_unlock(&ust_reg->lock);
+       {
+               auto locked_ust_reg = ust_reg->lock();
+               ret_push = ust_app_push_metadata(locked_ust_reg, socket, 1);
+       }
        if (ret_push == -EPIPE) {
                DBG("Application or relay closed while pushing metadata");
        } else if (ret_push < 0) {
This page took 0.023363 seconds and 4 git commands to generate.