lib: introduce bt_message_iterator_class
[babeltrace.git] / src / plugins / utils / trimmer / trimmer.c
index 5c7ec431cc9ec64ff78157d477682173b7eb0fd3..d7f5576bdd6bb7719f2255d749095f881e49d338 100644 (file)
  * SOFTWARE.
  */
 
-#define BT_COMP_LOG_SELF_COMP (trimmer_comp->self_comp)
 #define BT_LOG_OUTPUT_LEVEL (trimmer_comp->log_level)
 #define BT_LOG_TAG "PLUGIN/FLT.UTILS.TRIMMER"
-#include "plugins/comp-logging.h"
+#include "logging/comp-logging.h"
 
 #include "compat/utc.h"
 #include "compat/time.h"
 #include <babeltrace2/babeltrace.h>
 #include "common/common.h"
 #include "common/assert.h"
+#include <stdbool.h>
 #include <stdint.h>
 #include <inttypes.h>
 #include <glib.h>
 #include "compat/glib.h"
+#include "plugins/common/param-validation/param-validation.h"
 
 #include "trimmer.h"
 
@@ -75,6 +76,7 @@ struct trimmer_comp {
        bool is_gmt;
        bt_logging_level log_level;
        bt_self_component *self_comp;
+       bt_self_component_filter *self_comp_filter;
 };
 
 enum trimmer_iterator_state {
@@ -422,10 +424,13 @@ int set_bound_from_str(struct trimmer_comp *trimmer_comp,
                goto end;
        }
 
-       BT_COMP_LOGE("Invalid date/time format: param=\"%s\"", str);
+       BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+               "Invalid date/time format: param=\"%s\"", str);
        ret = -1;
 
 end:
+       g_match_info_free(match_info);
+
        return ret;
 }
 
@@ -453,18 +458,13 @@ int set_bound_from_param(struct trimmer_comp *trimmer_comp,
                 */
                sprintf(tmp_arg, "%" PRId64, value);
                arg = tmp_arg;
-       } else if (bt_value_is_string(param)) {
-               arg = bt_value_string_get(param);
        } else {
-               BT_COMP_LOGE("`%s` parameter must be an integer or a string value.",
-                       param_name);
-               ret = -1;
-               goto end;
+               BT_ASSERT(bt_value_is_string(param));
+               arg = bt_value_string_get(param);
        }
 
        ret = set_bound_from_str(trimmer_comp, arg, bound, is_gmt);
 
-end:
        return ret;
 }
 
@@ -479,7 +479,8 @@ int validate_trimmer_bounds(struct trimmer_comp *trimmer_comp,
 
        if (!begin->is_infinite && !end->is_infinite &&
                        begin->ns_from_origin > end->ns_from_origin) {
-               BT_COMP_LOGE("Trimming time range's beginning time is greater than end time: "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Trimming time range's beginning time is greater than end time: "
                        "begin-ns-from-origin=%" PRId64 ", "
                        "end-ns-from-origin=%" PRId64,
                        begin->ns_from_origin,
@@ -489,7 +490,8 @@ int validate_trimmer_bounds(struct trimmer_comp *trimmer_comp,
        }
 
        if (!begin->is_infinite && begin->ns_from_origin == INT64_MIN) {
-               BT_COMP_LOGE("Invalid trimming time range's beginning time: "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Invalid trimming time range's beginning time: "
                        "ns-from-origin=%" PRId64,
                        begin->ns_from_origin);
                ret = -1;
@@ -497,7 +499,8 @@ int validate_trimmer_bounds(struct trimmer_comp *trimmer_comp,
        }
 
        if (!end->is_infinite && end->ns_from_origin == INT64_MIN) {
-               BT_COMP_LOGE("Invalid trimming time range's end time: "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Invalid trimming time range's end time: "
                        "ns-from-origin=%" PRId64,
                        end->ns_from_origin);
                ret = -1;
@@ -509,11 +512,53 @@ end:
 }
 
 static
-int init_trimmer_comp_from_params(struct trimmer_comp *trimmer_comp,
+enum bt_param_validation_status validate_bound_type(
+               const bt_value *value,
+               struct bt_param_validation_context *context)
+{
+       enum bt_param_validation_status status = BT_PARAM_VALIDATION_STATUS_OK;
+
+       if (!bt_value_is_signed_integer(value) &&
+                       !bt_value_is_string(value)) {
+               status = bt_param_validation_error(context,
+                       "unexpected type: expected-types=[%s, %s], actual-type=%s",
+                       bt_common_value_type_string(BT_VALUE_TYPE_SIGNED_INTEGER),
+                       bt_common_value_type_string(BT_VALUE_TYPE_STRING),
+                       bt_common_value_type_string(bt_value_get_type(value)));
+       }
+
+       return status;
+}
+
+static
+struct bt_param_validation_map_value_entry_descr trimmer_params[] = {
+       { "gmt", BT_PARAM_VALIDATION_MAP_VALUE_ENTRY_OPTIONAL, { .type = BT_VALUE_TYPE_BOOL } },
+       { "begin", BT_PARAM_VALIDATION_MAP_VALUE_ENTRY_OPTIONAL, { .validation_func = validate_bound_type } },
+       { "end", BT_PARAM_VALIDATION_MAP_VALUE_ENTRY_OPTIONAL, { .validation_func = validate_bound_type } },
+       BT_PARAM_VALIDATION_MAP_VALUE_ENTRY_END
+};
+
+static
+bt_component_class_initialize_method_status init_trimmer_comp_from_params(
+               struct trimmer_comp *trimmer_comp,
                const bt_value *params)
 {
        const bt_value *value;
-       int ret = 0;
+       bt_component_class_initialize_method_status status;
+       enum bt_param_validation_status validation_status;
+       gchar *validate_error = NULL;
+
+       validation_status = bt_param_validation_validate(params,
+               trimmer_params, &validate_error);
+       if (validation_status == BT_PARAM_VALIDATION_STATUS_MEMORY_ERROR) {
+               status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR;
+               goto end;
+       } else if (validation_status == BT_PARAM_VALIDATION_STATUS_VALIDATION_ERROR) {
+               status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR;
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp, "%s",
+                       validate_error);
+               goto end;
+       }
 
        BT_ASSERT(params);
         value = bt_value_map_borrow_entry_value_const(params, "gmt");
@@ -526,7 +571,7 @@ int init_trimmer_comp_from_params(struct trimmer_comp *trimmer_comp,
                if (set_bound_from_param(trimmer_comp, "begin", value,
                                &trimmer_comp->begin, trimmer_comp->is_gmt)) {
                        /* set_bound_from_param() logs errors */
-                       ret = -1;
+                       status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR;
                        goto end;
                }
        } else {
@@ -539,7 +584,7 @@ int init_trimmer_comp_from_params(struct trimmer_comp *trimmer_comp,
                if (set_bound_from_param(trimmer_comp, "end", value,
                                &trimmer_comp->end, trimmer_comp->is_gmt)) {
                        /* set_bound_from_param() logs errors */
-                       ret = -1;
+                       status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR;
                        goto end;
                }
        } else {
@@ -547,75 +592,69 @@ int init_trimmer_comp_from_params(struct trimmer_comp *trimmer_comp,
                trimmer_comp->end.is_set = true;
        }
 
-end:
        if (trimmer_comp->begin.is_set && trimmer_comp->end.is_set) {
                /* validate_trimmer_bounds() logs errors */
-               ret = validate_trimmer_bounds(trimmer_comp,
-                       &trimmer_comp->begin, &trimmer_comp->end);
+               if (validate_trimmer_bounds(trimmer_comp,
+                       &trimmer_comp->begin, &trimmer_comp->end)) {
+                       status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_ERROR;
+                       goto end;
+               }
        }
 
-       return ret;
+       status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK;
+
+end:
+       g_free(validate_error);
+
+       return status;
 }
 
-bt_component_class_init_method_status trimmer_init(
+bt_component_class_initialize_method_status trimmer_init(
                bt_self_component_filter *self_comp_flt,
+               bt_self_component_filter_configuration *config,
                const bt_value *params, void *init_data)
 {
-       int ret;
-       bt_component_class_init_method_status status =
-               BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK;
+       bt_component_class_initialize_method_status status;
        bt_self_component_add_port_status add_port_status;
        struct trimmer_comp *trimmer_comp = create_trimmer_comp();
        bt_self_component *self_comp =
                bt_self_component_filter_as_self_component(self_comp_flt);
+
        if (!trimmer_comp) {
-               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR;
+               status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR;
                goto error;
        }
 
        trimmer_comp->log_level = bt_component_get_logging_level(
                bt_self_component_as_component(self_comp));
        trimmer_comp->self_comp = self_comp;
+       trimmer_comp->self_comp_filter = self_comp_flt;
+
        add_port_status = bt_self_component_filter_add_input_port(
                self_comp_flt, in_port_name, NULL, NULL);
-       switch (add_port_status) {
-       case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR:
-               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
+       if (add_port_status != BT_SELF_COMPONENT_ADD_PORT_STATUS_OK) {
+               status = (int) add_port_status;
                goto error;
-       case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR:
-               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR;
-               goto error;
-       default:
-               break;
        }
 
        add_port_status = bt_self_component_filter_add_output_port(
                self_comp_flt, "out", NULL, NULL);
-       switch (add_port_status) {
-       case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR:
-               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
+       if (add_port_status != BT_SELF_COMPONENT_ADD_PORT_STATUS_OK) {
+               status = (int) add_port_status;
                goto error;
-       case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR:
-               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR;
-               goto error;
-       default:
-               break;
        }
 
-       ret = init_trimmer_comp_from_params(trimmer_comp, params);
-       if (ret) {
-               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
+       status = init_trimmer_comp_from_params(trimmer_comp, params);
+       if (status != BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK) {
                goto error;
        }
 
        bt_self_component_set_data(self_comp, trimmer_comp);
+
+       status = BT_COMPONENT_CLASS_INITIALIZE_METHOD_STATUS_OK;
        goto end;
 
 error:
-       if (status == BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK) {
-               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
-       }
-
        if (trimmer_comp) {
                destroy_trimmer_comp(trimmer_comp);
        }
@@ -627,7 +666,10 @@ end:
 static
 void destroy_trimmer_iterator(struct trimmer_iterator *trimmer_it)
 {
-       BT_ASSERT(trimmer_it);
+       if (!trimmer_it) {
+               goto end;
+       }
+
        bt_self_component_port_input_message_iterator_put_ref(
                trimmer_it->upstream_iter);
 
@@ -640,6 +682,8 @@ void destroy_trimmer_iterator(struct trimmer_iterator *trimmer_it)
        }
 
        g_free(trimmer_it);
+end:
+       return;
 }
 
 static
@@ -652,23 +696,24 @@ void destroy_trimmer_iterator_stream_state(
 }
 
 BT_HIDDEN
-bt_component_class_message_iterator_init_method_status trimmer_msg_iter_init(
+bt_message_iterator_class_initialize_method_status trimmer_msg_iter_init(
                bt_self_message_iterator *self_msg_iter,
-               bt_self_component_filter *self_comp,
+               bt_self_message_iterator_configuration *config,
+               bt_self_component *self_comp,
                bt_self_component_port_output *port)
 {
-       bt_component_class_message_iterator_init_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK;
+       bt_message_iterator_class_initialize_method_status status;
+       bt_self_component_port_input_message_iterator_create_from_message_iterator_status
+               msg_iter_status;
        struct trimmer_iterator *trimmer_it;
 
        trimmer_it = g_new0(struct trimmer_iterator, 1);
        if (!trimmer_it) {
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
-               goto end;
+               status = BT_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR;
+               goto error;
        }
 
-       trimmer_it->trimmer_comp = bt_self_component_get_data(
-               bt_self_component_filter_as_self_component(self_comp));
+       trimmer_it->trimmer_comp = bt_self_component_get_data(self_comp);
        BT_ASSERT(trimmer_it->trimmer_comp);
 
        if (trimmer_it->trimmer_comp->begin.is_set &&
@@ -684,38 +729,48 @@ bt_component_class_message_iterator_init_method_status trimmer_msg_iter_init(
 
        trimmer_it->begin = trimmer_it->trimmer_comp->begin;
        trimmer_it->end = trimmer_it->trimmer_comp->end;
-       trimmer_it->upstream_iter =
+       msg_iter_status =
                bt_self_component_port_input_message_iterator_create_from_message_iterator(
                        self_msg_iter,
                        bt_self_component_filter_borrow_input_port_by_name(
-                               self_comp, in_port_name));
-       if (!trimmer_it->upstream_iter) {
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_ERROR;
-               goto end;
+                               trimmer_it->trimmer_comp->self_comp_filter, in_port_name),
+                       &trimmer_it->upstream_iter);
+       if (msg_iter_status != BT_SELF_COMPONENT_PORT_INPUT_MESSAGE_ITERATOR_CREATE_FROM_MESSAGE_ITERATOR_STATUS_OK) {
+               status = (int) msg_iter_status;
+               goto error;
        }
 
        trimmer_it->output_messages = g_queue_new();
        if (!trimmer_it->output_messages) {
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
-               goto end;
+               status = BT_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR;
+               goto error;
        }
 
        trimmer_it->stream_states = g_hash_table_new_full(g_direct_hash,
                g_direct_equal, NULL,
                (GDestroyNotify) destroy_trimmer_iterator_stream_state);
        if (!trimmer_it->stream_states) {
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
-               goto end;
+               status = BT_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_STATUS_MEMORY_ERROR;
+               goto error;
        }
 
+       /*
+        * The trimmer requires upstream messages to have times, so it can
+        * always seek forward.
+        */
+       bt_self_message_iterator_configuration_set_can_seek_forward(
+               config, BT_TRUE);
+
        trimmer_it->self_msg_iter = self_msg_iter;
        bt_self_message_iterator_set_data(self_msg_iter, trimmer_it);
 
-end:
-       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK && trimmer_it) {
-               destroy_trimmer_iterator(trimmer_it);
-       }
+       status = BT_MESSAGE_ITERATOR_CLASS_INITIALIZE_METHOD_STATUS_OK;
+       goto end;
 
+error:
+       destroy_trimmer_iterator(trimmer_it);
+
+end:
        return status;
 }
 
@@ -727,9 +782,9 @@ int get_msg_ns_from_origin(const bt_message *msg, int64_t *ns_from_origin,
        const bt_clock_snapshot *clock_snapshot = NULL;
        int ret = 0;
 
-       BT_ASSERT(msg);
-       BT_ASSERT(ns_from_origin);
-       BT_ASSERT(has_clock_snapshot);
+       BT_ASSERT_DBG(msg);
+       BT_ASSERT_DBG(ns_from_origin);
+       BT_ASSERT_DBG(has_clock_snapshot);
 
        switch (bt_message_get_type(msg)) {
        case BT_MESSAGE_TYPE_EVENT:
@@ -882,7 +937,8 @@ int set_trimmer_iterator_bound(struct trimmer_iterator *trimmer_it,
        }
 
        if (!res) {
-               BT_COMP_LOGE_ERRNO("Cannot convert timestamp to date and time",
+               BT_COMP_LOGE_APPEND_CAUSE_ERRNO(trimmer_comp->self_comp,
+                       "Cannot convert timestamp to date and time",
                        ": ts=%" PRId64, (int64_t) time_seconds);
                ret = -1;
                goto end;
@@ -897,7 +953,7 @@ end:
 }
 
 static
-bt_component_class_message_iterator_next_method_status
+bt_message_iterator_class_next_method_status
 state_set_trimmer_iterator_bounds(
                struct trimmer_iterator *trimmer_it)
 {
@@ -924,8 +980,6 @@ state_set_trimmer_iterator_bounds(
                for (i = 0; i < count; i++) {
                        const bt_message *msg = msgs[i];
                        bool has_ns_from_origin;
-                       int ret;
-
                        ret = get_msg_ns_from_origin(msg, &ns_from_origin,
                                &has_ns_from_origin);
                        if (ret) {
@@ -936,7 +990,7 @@ state_set_trimmer_iterator_bounds(
                                continue;
                        }
 
-                       BT_ASSERT(ns_from_origin != INT64_MIN &&
+                       BT_ASSERT_DBG(ns_from_origin != INT64_MIN &&
                                ns_from_origin != INT64_MAX);
                        put_messages(msgs, count);
                        goto found;
@@ -981,33 +1035,59 @@ end:
 }
 
 static
-bt_component_class_message_iterator_next_method_status state_seek_initially(
+bt_message_iterator_class_next_method_status state_seek_initially(
                struct trimmer_iterator *trimmer_it)
 {
        struct trimmer_comp *trimmer_comp = trimmer_it->trimmer_comp;
-       bt_component_class_message_iterator_next_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       bt_message_iterator_class_next_method_status status;
 
        BT_ASSERT(trimmer_it->begin.is_set);
 
        if (trimmer_it->begin.is_infinite) {
-               if (!bt_self_component_port_input_message_iterator_can_seek_beginning(
-                               trimmer_it->upstream_iter)) {
-                       BT_COMP_LOGE_STR("Cannot make upstream message iterator initially seek its beginning.");
-                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+               bt_bool can_seek;
+
+               status = (int) bt_self_component_port_input_message_iterator_can_seek_beginning(
+                       trimmer_it->upstream_iter, &can_seek);
+               if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
+                       if (status < 0) {
+                               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                                       "Cannot make upstream message iterator initially seek its beginning.");
+                       }
+
+                       goto end;
+               }
+
+               if (!can_seek) {
+                       BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                               "Cannot make upstream message iterator initially seek its beginning.");
+                       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
                status = (int) bt_self_component_port_input_message_iterator_seek_beginning(
                        trimmer_it->upstream_iter);
        } else {
-               if (!bt_self_component_port_input_message_iterator_can_seek_ns_from_origin(
-                               trimmer_it->upstream_iter,
-                               trimmer_it->begin.ns_from_origin)) {
-                       BT_COMP_LOGE("Cannot make upstream message iterator initially seek: "
-                               "seek-ns-from-origin=%" PRId64,
+               bt_bool can_seek;
+
+               status = (int) bt_self_component_port_input_message_iterator_can_seek_ns_from_origin(
+                       trimmer_it->upstream_iter, trimmer_it->begin.ns_from_origin,
+                       &can_seek);
+
+               if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
+                       if (status < 0) {
+                               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                                       "Cannot make upstream message iterator initially seek: seek-ns-from-origin=%" PRId64,
+                                       trimmer_it->begin.ns_from_origin);
+                       }
+
+                       goto end;
+               }
+
+               if (!can_seek) {
+                       BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                               "Cannot make upstream message iterator initially seek: seek-ns-from-origin=%" PRId64,
                                trimmer_it->begin.ns_from_origin);
-                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+                       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
@@ -1015,7 +1095,7 @@ bt_component_class_message_iterator_next_method_status state_seek_initially(
                        trimmer_it->upstream_iter, trimmer_it->begin.ns_from_origin);
        }
 
-       if (status == BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+       if (status == BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                trimmer_it->state = TRIMMER_ITERATOR_STATE_TRIM;
        }
 
@@ -1051,12 +1131,12 @@ int clock_raw_value_from_ns_from_origin(const bt_clock_class *clock_class,
 }
 
 static inline
-bt_component_class_message_iterator_next_method_status
+bt_message_iterator_class_next_method_status
 end_stream(struct trimmer_iterator *trimmer_it,
                struct trimmer_iterator_stream_state *sstate)
 {
-       bt_component_class_message_iterator_next_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       bt_message_iterator_class_next_method_status status =
+               BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
        /* Initialize to silence maybe-uninitialized warning. */
        uint64_t raw_value = 0;
        bt_message *msg = NULL;
@@ -1084,7 +1164,7 @@ end_stream(struct trimmer_iterator *trimmer_it,
                ret = clock_raw_value_from_ns_from_origin(clock_class,
                        trimmer_it->end.ns_from_origin, &raw_value);
                if (ret) {
-                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+                       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
        }
@@ -1105,7 +1185,7 @@ end_stream(struct trimmer_iterator *trimmer_it,
                        trimmer_it->self_msg_iter, sstate->cur_packet,
                        raw_value);
                if (!msg) {
-                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
+                       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_MEMORY_ERROR;
                        goto end;
                }
 
@@ -1118,7 +1198,7 @@ end_stream(struct trimmer_iterator *trimmer_it,
        msg = bt_message_stream_end_create(trimmer_it->self_msg_iter,
                sstate->stream);
        if (!msg) {
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_MEMORY_ERROR;
                goto end;
        }
 
@@ -1141,11 +1221,11 @@ end:
 }
 
 static inline
-bt_component_class_message_iterator_next_method_status end_iterator_streams(
+bt_message_iterator_class_next_method_status end_iterator_streams(
                struct trimmer_iterator *trimmer_it)
 {
-       bt_component_class_message_iterator_next_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       bt_message_iterator_class_next_method_status status =
+               BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
        GHashTableIter iter;
        gpointer key, sstate;
 
@@ -1179,14 +1259,14 @@ end:
 }
 
 static
-bt_component_class_message_iterator_next_method_status
+bt_message_iterator_class_next_method_status
 create_stream_state_entry(
                struct trimmer_iterator *trimmer_it,
                const struct bt_stream *stream,
                struct trimmer_iterator_stream_state **stream_state)
 {
        struct trimmer_comp *trimmer_comp = trimmer_it->trimmer_comp;
-       bt_component_class_message_iterator_next_method_status status;
+       bt_message_iterator_class_next_method_status status;
        struct trimmer_iterator_stream_state *sstate;
        const bt_stream_class *sc;
 
@@ -1204,14 +1284,15 @@ create_stream_state_entry(
         */
        sc = bt_stream_borrow_class_const(stream);
        if (!bt_stream_class_borrow_default_clock_class_const(sc)) {
-               BT_COMP_LOGE("Unsupported stream: stream class does "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Unsupported stream: stream class does "
                        "not have a default clock class: "
                        "stream-addr=%p, "
                        "stream-id=%" PRIu64 ", "
                        "stream-name=\"%s\"",
                        stream, bt_stream_get_id(stream),
                        bt_stream_get_name(stream));
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                goto end;
        }
 
@@ -1224,59 +1305,60 @@ create_stream_state_entry(
         */
        if (!bt_stream_class_packets_have_beginning_default_clock_snapshot(
                        sc)) {
-               BT_COMP_LOGE("Unsupported stream: packets have "
-                       "no beginning clock snapshot: "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Unsupported stream: packets have no beginning clock snapshot: "
                        "stream-addr=%p, "
                        "stream-id=%" PRIu64 ", "
                        "stream-name=\"%s\"",
                        stream, bt_stream_get_id(stream),
                        bt_stream_get_name(stream));
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                goto end;
        }
 
        if (!bt_stream_class_packets_have_end_default_clock_snapshot(
                        sc)) {
-               BT_COMP_LOGE("Unsupported stream: packets have "
-                       "no end clock snapshot: "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Unsupported stream: packets have no end clock snapshot: "
                        "stream-addr=%p, "
                        "stream-id=%" PRIu64 ", "
                        "stream-name=\"%s\"",
                        stream, bt_stream_get_id(stream),
                        bt_stream_get_name(stream));
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                goto end;
        }
 
        if (bt_stream_class_supports_discarded_events(sc) &&
                        !bt_stream_class_discarded_events_have_default_clock_snapshots(sc)) {
-               BT_COMP_LOGE("Unsupported stream: discarded events "
-                       "have no clock snapshots: "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Unsupported stream: discarded events have no clock snapshots: "
                        "stream-addr=%p, "
                        "stream-id=%" PRIu64 ", "
                        "stream-name=\"%s\"",
                        stream, bt_stream_get_id(stream),
                        bt_stream_get_name(stream));
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                goto end;
        }
 
        if (bt_stream_class_supports_discarded_packets(sc) &&
                        !bt_stream_class_discarded_packets_have_default_clock_snapshots(sc)) {
-               BT_COMP_LOGE("Unsupported stream: discarded packets "
+               BT_COMP_LOGE_APPEND_CAUSE(trimmer_comp->self_comp,
+                       "Unsupported stream: discarded packets "
                        "have no clock snapshots: "
                        "stream-addr=%p, "
                        "stream-id=%" PRIu64 ", "
                        "stream-name=\"%s\"",
                        stream, bt_stream_get_id(stream),
                        bt_stream_get_name(stream));
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                goto end;
        }
 
        sstate = g_new0(struct trimmer_iterator_stream_state, 1);
        if (!sstate) {
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_MEMORY_ERROR;
                goto end;
        }
 
@@ -1286,7 +1368,7 @@ create_stream_state_entry(
 
        *stream_state = sstate;
 
-       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
 
 end:
        return status;
@@ -1299,9 +1381,9 @@ struct trimmer_iterator_stream_state *get_stream_state_entry(
 {
        struct trimmer_iterator_stream_state *sstate;
 
-       BT_ASSERT(stream);
+       BT_ASSERT_DBG(stream);
        sstate = g_hash_table_lookup(trimmer_it->stream_states, stream);
-       BT_ASSERT(sstate);
+       BT_ASSERT_DBG(sstate);
 
        return sstate;
 }
@@ -1323,14 +1405,14 @@ struct trimmer_iterator_stream_state *get_stream_state_entry(
  * `reached_end`.
  */
 static
-bt_component_class_message_iterator_next_method_status
+bt_message_iterator_class_next_method_status
 handle_message_with_stream(
                struct trimmer_iterator *trimmer_it, const bt_message *msg,
                const struct bt_stream *stream, const int64_t *ns_from_origin,
                bool *reached_end)
 {
-       bt_component_class_message_iterator_next_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       bt_message_iterator_class_next_method_status status =
+               BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
        bt_message_type msg_type = bt_message_get_type(msg);
        int ret;
        struct trimmer_iterator_stream_state *sstate = NULL;
@@ -1350,7 +1432,7 @@ handle_message_with_stream(
                 * class has a clock class. And we know it has, otherwise we
                 * couldn't be using the trimmer component.
                 */
-               BT_ASSERT(ns_from_origin);
+               BT_ASSERT_DBG(ns_from_origin);
 
                if (G_UNLIKELY(!trimmer_it->end.is_infinite &&
                                *ns_from_origin > trimmer_it->end.ns_from_origin)) {
@@ -1450,7 +1532,7 @@ handle_message_with_stream(
 
                if (bt_clock_snapshot_get_ns_from_origin(end_cs,
                                &end_ns_from_origin)) {
-                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+                       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
@@ -1480,7 +1562,7 @@ handle_message_with_stream(
                        ret = clock_raw_value_from_ns_from_origin(clock_class,
                                trimmer_it->end.ns_from_origin, &end_raw_value);
                        if (ret) {
-                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+                               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                                goto end;
                        }
 
@@ -1503,7 +1585,7 @@ handle_message_with_stream(
                        }
 
                        if (!new_msg) {
-                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
+                               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_MEMORY_ERROR;
                                goto end;
                        }
 
@@ -1530,7 +1612,7 @@ handle_message_with_stream(
 
                /* Learn about this stream. */
                status = create_stream_state_entry(trimmer_it, stream, &sstate);
-               if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+               if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                        goto end;
                }
 
@@ -1592,11 +1674,11 @@ end:
  * `reached_end`.
  */
 static inline
-bt_component_class_message_iterator_next_method_status handle_message(
+bt_message_iterator_class_next_method_status handle_message(
                struct trimmer_iterator *trimmer_it, const bt_message *msg,
                bool *reached_end)
 {
-       bt_component_class_message_iterator_next_method_status status;
+       bt_message_iterator_class_next_method_status status;
        const bt_stream *stream = NULL;
        int64_t ns_from_origin = INT64_MIN;
        bool has_ns_from_origin = false;
@@ -1635,7 +1717,7 @@ bt_component_class_message_iterator_next_method_status handle_message(
        /* Retrieve the message's time */
        ret = get_msg_ns_from_origin(msg, &ns_from_origin, &has_ns_from_origin);
        if (G_UNLIKELY(ret)) {
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_ERROR;
                goto end;
        }
 
@@ -1660,7 +1742,7 @@ bt_component_class_message_iterator_next_method_status handle_message(
                        *reached_end = true;
                } else {
                        push_message(trimmer_it, msg);
-                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+                       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
                        msg = NULL;
                }
        }
@@ -1688,21 +1770,21 @@ void fill_message_array_from_output_messages(
                (*count)++;
        }
 
-       BT_ASSERT(*count > 0);
+       BT_ASSERT_DBG(*count > 0);
 }
 
 static inline
-bt_component_class_message_iterator_next_method_status state_ending(
+bt_message_iterator_class_next_method_status state_ending(
                struct trimmer_iterator *trimmer_it,
                bt_message_array_const msgs, uint64_t capacity,
                uint64_t *count)
 {
-       bt_component_class_message_iterator_next_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       bt_message_iterator_class_next_method_status status =
+               BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
 
        if (g_queue_is_empty(trimmer_it->output_messages)) {
                trimmer_it->state = TRIMMER_ITERATOR_STATE_ENDED;
-               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END;
+               status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_END;
                goto end;
        }
 
@@ -1714,13 +1796,13 @@ end:
 }
 
 static inline
-bt_component_class_message_iterator_next_method_status
+bt_message_iterator_class_next_method_status
 state_trim(struct trimmer_iterator *trimmer_it,
                bt_message_array_const msgs, uint64_t capacity,
                uint64_t *count)
 {
-       bt_component_class_message_iterator_next_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       bt_message_iterator_class_next_method_status status =
+               BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
        bt_message_array_const my_msgs;
        uint64_t my_count;
        uint64_t i;
@@ -1729,10 +1811,10 @@ state_trim(struct trimmer_iterator *trimmer_it,
        while (g_queue_is_empty(trimmer_it->output_messages)) {
                status = (int) bt_self_component_port_input_message_iterator_next(
                        trimmer_it->upstream_iter, &my_msgs, &my_count);
-               if (G_UNLIKELY(status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK)) {
-                       if (status == BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END) {
+               if (G_UNLIKELY(status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK)) {
+                       if (status == BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_END) {
                                status = end_iterator_streams(trimmer_it);
-                               if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+                               if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                                        goto end;
                                }
 
@@ -1745,7 +1827,7 @@ state_trim(struct trimmer_iterator *trimmer_it,
                        goto end;
                }
 
-               BT_ASSERT(my_count > 0);
+               BT_ASSERT_DBG(my_count > 0);
 
                for (i = 0; i < my_count; i++) {
                        status = handle_message(trimmer_it, my_msgs[i],
@@ -1758,7 +1840,7 @@ state_trim(struct trimmer_iterator *trimmer_it,
                        my_msgs[i] = NULL;
 
                        if (G_UNLIKELY(status !=
-                                       BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK)) {
+                                       BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK)) {
                                put_messages(my_msgs, my_count);
                                goto end;
                        }
@@ -1788,7 +1870,7 @@ state_trim(struct trimmer_iterator *trimmer_it,
         * There's at least one message in the output message queue:
         * move the messages to the output message array.
         */
-       BT_ASSERT(!g_queue_is_empty(trimmer_it->output_messages));
+       BT_ASSERT_DBG(!g_queue_is_empty(trimmer_it->output_messages));
        fill_message_array_from_output_messages(trimmer_it, msgs,
                capacity, count);
 
@@ -1797,50 +1879,50 @@ end:
 }
 
 BT_HIDDEN
-bt_component_class_message_iterator_next_method_status trimmer_msg_iter_next(
+bt_message_iterator_class_next_method_status trimmer_msg_iter_next(
                bt_self_message_iterator *self_msg_iter,
                bt_message_array_const msgs, uint64_t capacity,
                uint64_t *count)
 {
        struct trimmer_iterator *trimmer_it =
                bt_self_message_iterator_get_data(self_msg_iter);
-       bt_component_class_message_iterator_next_method_status status =
-               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
+       bt_message_iterator_class_next_method_status status =
+               BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
 
-       BT_ASSERT(trimmer_it);
+       BT_ASSERT_DBG(trimmer_it);
 
        if (G_LIKELY(trimmer_it->state == TRIMMER_ITERATOR_STATE_TRIM)) {
                status = state_trim(trimmer_it, msgs, capacity, count);
-               if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+               if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                        goto end;
                }
        } else {
                switch (trimmer_it->state) {
                case TRIMMER_ITERATOR_STATE_SET_BOUNDS_NS_FROM_ORIGIN:
                        status = state_set_trimmer_iterator_bounds(trimmer_it);
-                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+                       if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        status = state_seek_initially(trimmer_it);
-                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+                       if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        status = state_trim(trimmer_it, msgs, capacity, count);
-                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+                       if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        break;
                case TRIMMER_ITERATOR_STATE_SEEK_INITIALLY:
                        status = state_seek_initially(trimmer_it);
-                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+                       if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        status = state_trim(trimmer_it, msgs, capacity, count);
-                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+                       if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
@@ -1848,16 +1930,16 @@ bt_component_class_message_iterator_next_method_status trimmer_msg_iter_next(
                case TRIMMER_ITERATOR_STATE_ENDING:
                        status = state_ending(trimmer_it, msgs, capacity,
                                count);
-                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
+                       if (status != BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        break;
                case TRIMMER_ITERATOR_STATE_ENDED:
-                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END;
+                       status = BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_END;
                        break;
                default:
-                       abort();
+                       bt_common_abort();
                }
        }
 
This page took 0.052638 seconds and 4 git commands to generate.