Log uts information on launch of the session and relay daemon
[lttng-tools.git] / src / common / error-query.cpp
index 31de0ee5e764c7d1b0ea98a784668afaedbdc304..d3831ae81b86bf6c509c42818119fc937394cde2 100644 (file)
@@ -58,7 +58,7 @@ struct lttng_error_query_action {
        struct lttng_error_query parent;
        /* Mutable only because of the reference count. */
        struct lttng_trigger *trigger;
-       struct lttng_action_path action_path;
+       struct lttng_action_path *action_path;
 };
 
 struct lttng_error_query_result_comm {
@@ -248,15 +248,42 @@ end:
 
 void lttng_error_query_destroy(struct lttng_error_query *query)
 {
-       struct lttng_error_query_trigger *trigger_query;
-
        if (!query) {
                return;
        }
 
-       trigger_query = container_of(query, typeof(*trigger_query), parent);
-       lttng_trigger_put(trigger_query->trigger);
-       free(trigger_query);
+       switch (query->target_type) {
+       case LTTNG_ERROR_QUERY_TARGET_TYPE_TRIGGER:
+       {
+               struct lttng_error_query_trigger *trigger_query =
+                               lttng::utils::container_of(query, &lttng_error_query_trigger::parent);
+
+               lttng_trigger_put(trigger_query->trigger);
+               free(trigger_query);
+               break;
+       }
+       case LTTNG_ERROR_QUERY_TARGET_TYPE_CONDITION:
+       {
+               struct lttng_error_query_condition *condition_query = lttng::utils::container_of(
+                               query, &lttng_error_query_condition::parent);
+
+               lttng_trigger_put(condition_query->trigger);
+               free(condition_query);
+               break;
+       }
+       case LTTNG_ERROR_QUERY_TARGET_TYPE_ACTION:
+       {
+               struct lttng_error_query_action *action_query = lttng::utils::container_of(
+                               query, &lttng_error_query_action::parent);
+
+               lttng_trigger_put(action_query->trigger);
+               lttng_action_path_destroy(action_query->action_path);
+               free(action_query);
+               break;
+       }
+       default:
+               abort();
+       }
 }
 
 static
@@ -267,7 +294,8 @@ int lttng_error_query_result_counter_serialize(
        const struct lttng_error_query_result_counter *counter_result;
 
        LTTNG_ASSERT(result->type == LTTNG_ERROR_QUERY_RESULT_TYPE_COUNTER);
-       counter_result = container_of(result, typeof(*counter_result), parent);
+       counter_result = lttng::utils::container_of(
+                       result, &lttng_error_query_result_counter::parent);
 
        lttng_error_query_result_counter_comm comm = {
                .value = counter_result->value,
@@ -283,11 +311,11 @@ int lttng_error_query_result_serialize(
                struct lttng_payload *payload)
 {
        int ret;
-       struct lttng_error_query_result_comm header = {
-               .type = (uint8_t) result->type,
-               .name_len = (typeof(header.name_len)) strlen(result->name) + 1,
-               .description_len = (typeof(header.name_len)) strlen(result->description) + 1,
-       };
+       struct lttng_error_query_result_comm header;
+
+       header.type = (uint8_t) result->type;
+       header.name_len = (typeof(header.name_len)) strlen(result->name) + 1;
+       header.description_len = (typeof(header.name_len)) strlen(result->description) + 1;
 
        /* Header. */
        ret = lttng_dynamic_buffer_append(
@@ -537,9 +565,9 @@ int lttng_error_query_results_serialize(
        size_t result_index;
        const size_t result_count = lttng_dynamic_pointer_array_get_count(
                        &results->results);
-       const struct lttng_error_query_results_comm header = {
-               .count = (decltype(header.count)) result_count,
-       };
+       struct lttng_error_query_results_comm header;
+
+       header.count = (decltype(header.count)) result_count;
 
        /* Header. */
        ret = lttng_dynamic_buffer_append(&payload->buffer, &header, sizeof(header));
@@ -632,7 +660,7 @@ int lttng_error_query_trigger_serialize(const struct lttng_error_query *query,
 {
        int ret;
        const struct lttng_error_query_trigger *query_trigger =
-                       container_of(query, typeof(*query_trigger), parent);
+                       lttng::utils::container_of(query, &lttng_error_query_trigger::parent);
 
        if (!lttng_trigger_validate(query_trigger->trigger)) {
                ret = -1;
@@ -654,7 +682,7 @@ int lttng_error_query_condition_serialize(const struct lttng_error_query *query,
 {
        int ret;
        const struct lttng_error_query_condition *query_trigger =
-                       container_of(query, typeof(*query_trigger), parent);
+                       lttng::utils::container_of(query, &lttng_error_query_condition::parent);
 
        if (!lttng_trigger_validate(query_trigger->trigger)) {
                ret = -1;
@@ -676,7 +704,7 @@ int lttng_error_query_action_serialize(const struct lttng_error_query *query,
 {
        int ret;
        const struct lttng_error_query_action *query_action =
-                       container_of(query, typeof(*query_action), parent);
+                       lttng::utils::container_of(query, &lttng_error_query_action::parent);
 
        if (!lttng_trigger_validate(query_action->trigger)) {
                ret = -1;
@@ -688,7 +716,7 @@ int lttng_error_query_action_serialize(const struct lttng_error_query *query,
                goto end;
        }
 
-       ret = lttng_action_path_serialize(&query_action->action_path, payload);
+       ret = lttng_action_path_serialize(query_action->action_path, payload);
        if (ret) {
                goto end;
        }
@@ -707,7 +735,7 @@ const struct lttng_trigger *lttng_error_query_trigger_borrow_target(
                const struct lttng_error_query *query)
 {
        const struct lttng_error_query_trigger *query_trigger =
-                       container_of(query, typeof(*query_trigger), parent);
+                       lttng::utils::container_of(query, &lttng_error_query_trigger::parent);
 
        return query_trigger->trigger;
 }
@@ -716,7 +744,7 @@ const struct lttng_trigger *lttng_error_query_condition_borrow_target(
                const struct lttng_error_query *query)
 {
        const struct lttng_error_query_condition *query_trigger =
-                       container_of(query, typeof(*query_trigger), parent);
+                       lttng::utils::container_of(query, &lttng_error_query_condition::parent);
 
        return query_trigger->trigger;
 }
@@ -725,29 +753,28 @@ const struct lttng_trigger *lttng_error_query_action_borrow_trigger_target(
                const struct lttng_error_query *query)
 {
        const struct lttng_error_query_action *query_action =
-                       container_of(query, typeof(*query_action), parent);
+                       lttng::utils::container_of(query, &lttng_error_query_action::parent);
 
        return query_action->trigger;
 }
 
 struct lttng_action *lttng_error_query_action_borrow_action_target(
-       const struct lttng_error_query *query,
-       struct lttng_trigger *trigger)
+               const struct lttng_error_query *query, struct lttng_trigger *trigger)
 {
        const struct lttng_error_query_action *query_action =
-                       container_of(query, typeof(*query_action), parent);
+                       lttng::utils::container_of(query, &lttng_error_query_action::parent);
 
        return get_trigger_action_from_path(
-                       trigger, &query_action->action_path);
+                       trigger, query_action->action_path);
 }
 
 int lttng_error_query_serialize(const struct lttng_error_query *query,
                struct lttng_payload *payload)
 {
        int ret;
-       const struct lttng_error_query_comm header = {
-               .target_type = (decltype(header.target_type)) query->target_type,
-       };
+       struct lttng_error_query_comm header;
+
+       header.target_type = (decltype(header.target_type)) query->target_type;
 
        ret = lttng_dynamic_buffer_append(
                        &payload->buffer, &header, sizeof(header));
@@ -1041,7 +1068,8 @@ enum lttng_error_query_result_status lttng_error_query_result_counter_get_value(
                goto end;
        }
 
-       counter_result = container_of(result, typeof(*counter_result), parent);
+       counter_result = lttng::utils::container_of(
+                       result, &lttng_error_query_result_counter::parent);
 
        *value = counter_result->value;
        status = LTTNG_ERROR_QUERY_RESULT_STATUS_OK;
This page took 0.026389 seconds and 4 git commands to generate.