Cleanup: remove duplicated code in snapshot record command
[lttng-tools.git] / src / common / consumer / consumer.c
index c70d95a58bfc91a3a053c1d160be6ec1f8a0bba6..3c20c57bda9d68ac1967de0cf433901ab8cce7e6 100644 (file)
@@ -393,6 +393,10 @@ void consumer_del_channel(struct lttng_consumer_channel *channel)
        iter.iter.node = &channel->node.node;
        ret = lttng_ht_del(consumer_data.channel_ht, &iter);
        assert(!ret);
+
+       iter.iter.node = &channel->channels_by_session_id_ht_node.node;
+       ret = lttng_ht_del(consumer_data.channels_by_session_id_ht, &iter);
+       assert(!ret);
        rcu_read_unlock();
 
        call_rcu(&channel->node.head, free_channel_rcu);
@@ -1035,6 +1039,8 @@ struct lttng_consumer_channel *consumer_allocate_channel(uint64_t key,
        }
 
        lttng_ht_node_init_u64(&channel->node, channel->key);
+       lttng_ht_node_init_u64(&channel->channels_by_session_id_ht_node,
+                       channel->session_id);
 
        channel->wait_fd = -1;
 
@@ -1067,6 +1073,8 @@ int consumer_add_channel(struct lttng_consumer_channel *channel,
 
        rcu_read_lock();
        lttng_ht_add_unique_u64(consumer_data.channel_ht, &channel->node);
+       lttng_ht_add_u64(consumer_data.channels_by_session_id_ht,
+                       &channel->channels_by_session_id_ht_node);
        rcu_read_unlock();
 
        pthread_mutex_unlock(&channel->timer_lock);
@@ -1225,6 +1233,7 @@ void lttng_consumer_cleanup(void)
        rcu_read_unlock();
 
        lttng_ht_destroy(consumer_data.channel_ht);
+       lttng_ht_destroy(consumer_data.channels_by_session_id_ht);
 
        cleanup_relayd_ht();
 
@@ -1236,6 +1245,8 @@ void lttng_consumer_cleanup(void)
         * it.
         */
        lttng_ht_destroy(consumer_data.stream_list_ht);
+
+       lttng_trace_chunk_registry_destroy(consumer_data.chunk_registry);
 }
 
 /*
@@ -3423,6 +3434,12 @@ int lttng_consumer_init(void)
                goto error;
        }
 
+       consumer_data.channels_by_session_id_ht =
+                       lttng_ht_new(0, LTTNG_HT_TYPE_U64);
+       if (!consumer_data.channels_by_session_id_ht) {
+               goto error;
+       }
+
        consumer_data.relayd_ht = lttng_ht_new(0, LTTNG_HT_TYPE_U64);
        if (!consumer_data.relayd_ht) {
                goto error;
@@ -3448,6 +3465,11 @@ int lttng_consumer_init(void)
                goto error;
        }
 
+       consumer_data.chunk_registry = lttng_trace_chunk_registry_create();
+       if (!consumer_data.chunk_registry) {
+               goto error;
+       }
+
        return 0;
 
 error:
@@ -4463,3 +4485,24 @@ int lttng_consumer_mkdir(const char *path, uid_t uid, gid_t gid,
                return mkdir_local(path, uid, gid);
        }
 }
+
+enum lttcomm_return_code lttng_consumer_init_command(
+               struct lttng_consumer_local_data *ctx,
+               const lttng_uuid sessiond_uuid)
+{
+       enum lttcomm_return_code ret;
+       char uuid_str[UUID_STR_LEN];
+
+       if (ctx->sessiond_uuid.is_set) {
+               ret = LTTCOMM_CONSUMERD_ALREADY_SET;
+               goto end;
+       }
+
+       ctx->sessiond_uuid.is_set = true;
+       memcpy(ctx->sessiond_uuid.value, sessiond_uuid, sizeof(lttng_uuid));
+       ret = LTTCOMM_CONSUMERD_SUCCESS;
+       lttng_uuid_to_str(sessiond_uuid, uuid_str);
+       DBG("Received session daemon UUID: %s", uuid_str);
+end:
+       return ret;
+}
This page took 0.024318 seconds and 4 git commands to generate.