tests: bt2: Fix `run_python_bt2` usage example
[babeltrace.git] / src / plugins / utils / trimmer / trimmer.c
index 218f7788ee8159f10e050f0bd4459208573ec35f..56ed9683f4617e965a204c8053ea3c699c3391fe 100644 (file)
@@ -174,6 +174,99 @@ void trimmer_finalize(bt_self_component_filter *self_comp)
        }
 }
 
+/*
+ * Compile regex in `pattern`, and try to match `string`.  If there's a match,
+ * return true and set `*match_info` to the list of matches.  The list of
+ * matches must be freed by the caller. If there's no match, return false and
+ * set `*match_info` to NULL;
+ */
+static
+bool compile_and_match(const char *pattern, const char *string, GMatchInfo **match_info) {
+       bool matches = false;
+       GError *regex_error = NULL;
+       GRegex *regex;
+
+       regex = g_regex_new(pattern, 0, 0, &regex_error);
+       if (!regex) {
+               goto end;
+       }
+
+       matches = g_regex_match(regex, string, 0, match_info);
+       if (!matches) {
+               /*
+                * g_regex_match allocates `*match_info` even if it returns
+                * FALSE.  If there's no match, we have no use for it, so free
+                * it immediatly and don't return it to the caller.
+                */
+               g_match_info_unref(*match_info);
+               *match_info = NULL;
+       }
+
+       g_regex_unref(regex);
+
+end:
+
+       if (regex_error) {
+               g_error_free(regex_error);
+       }
+
+       return matches;
+}
+
+/*
+ * Convert the captured text in match number `match_num` in `match_info`
+ * to an unsigned integer.
+ */
+static
+guint64 match_to_uint(const GMatchInfo *match_info, gint match_num) {
+       gchar *text, *endptr;
+       guint64 result;
+
+       text = g_match_info_fetch(match_info, match_num);
+       BT_ASSERT(text);
+
+       /*
+        * Because the input is carefully sanitized with regexes by the caller,
+        * we assume that g_ascii_strtoull cannot fail.
+        */
+       errno = 0;
+       result = g_ascii_strtoull(text, &endptr, 10);
+       BT_ASSERT(endptr > text);
+       BT_ASSERT(errno == 0);
+
+       g_free(text);
+
+       return result;
+}
+
+/*
+ * When parsing the nanoseconds part, .512 means .512000000, not .000000512.
+ * This function is like match_to_uint, but multiplies the parsed number to get
+ * the expected result.
+ */
+static
+guint64 match_to_uint_ns(const GMatchInfo *match_info, gint match_num) {
+       guint64 nanoseconds;
+       gboolean ret;
+       gint start_pos, end_pos, power;
+       static int pow10[] = {
+               1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000,
+       };
+
+       nanoseconds = match_to_uint(match_info, match_num);
+
+       /* Multiply by 10 as many times as there are omitted digits. */
+       ret = g_match_info_fetch_pos(match_info, match_num, &start_pos, &end_pos);
+       BT_ASSERT(ret);
+
+       power = 9 - (end_pos - start_pos);
+       BT_ASSERT(power >= 0 && power <= 8);
+
+       nanoseconds *= pow10[power];
+
+       return nanoseconds;
+}
+
 /*
  * Sets the time (in ns from origin) of a trimmer bound from date and
  * time components.
@@ -236,98 +329,104 @@ static
 int set_bound_from_str(struct trimmer_comp *trimmer_comp,
                const char *str, struct trimmer_bound *bound, bool is_gmt)
 {
+/* Matches YYYY-MM-DD */
+#define DATE_RE "([0-9]{4})-([0-9]{2})-([0-9]{2})"
+
+/* Matches HH:MM[:SS[.NS]] */
+#define TIME_RE "([0-9]{2}):([0-9]{2})(?::([0-9]{2})(?:\\.([0-9]{1,9}))?)?"
+
+/* Matches [-]SS[.NS] */
+#define S_NS_RE "^(-?)([0-9]+)(?:\\.([0-9]{1,9}))?$"
+
+       GMatchInfo *match_info;
        int ret = 0;
-       int s_ret;
-       unsigned int year, month, day, hour, minute, second, ns;
-       char dummy;
-
-       /* Try `YYYY-MM-DD hh:mm:ss.ns` format */
-       s_ret = sscanf(str, "%u-%u-%u %u:%u:%u.%u%c", &year, &month, &day,
-               &hour, &minute, &second, &ns, &dummy);
-       if (s_ret == 7) {
-               ret = set_bound_ns_from_origin(bound, year, month, day,
-                       hour, minute, second, ns, is_gmt);
-               goto end;
-       }
 
-       /* Try `YYYY-MM-DD hh:mm:ss` format */
-       s_ret = sscanf(str, "%u-%u-%u %u:%u:%u%c", &year, &month, &day,
-               &hour, &minute, &second, &dummy);
-       if (s_ret == 6) {
-               ret = set_bound_ns_from_origin(bound, year, month, day,
-                       hour, minute, second, 0, is_gmt);
-               goto end;
-       }
+       /* Try `YYYY-MM-DD hh:mm[:ss[.ns]]` format */
+       if (compile_and_match("^" DATE_RE " " TIME_RE "$", str, &match_info)) {
+               unsigned int year = 0, month = 0, day = 0, hours = 0, minutes = 0, seconds = 0, nanoseconds = 0;
+               gint match_count = g_match_info_get_match_count(match_info);
 
-       /* Try `YYYY-MM-DD hh:mm` format */
-       s_ret = sscanf(str, "%u-%u-%u %u:%u%c", &year, &month, &day,
-               &hour, &minute, &dummy);
-       if (s_ret == 5) {
-               ret = set_bound_ns_from_origin(bound, year, month, day,
-                       hour, minute, 0, 0, is_gmt);
-               goto end;
-       }
+               BT_ASSERT(match_count >= 6 && match_count <= 8);
 
-       /* Try `YYYY-MM-DD` format */
-       s_ret = sscanf(str, "%u-%u-%u%c", &year, &month, &day, &dummy);
-       if (s_ret == 3) {
-               ret = set_bound_ns_from_origin(bound, year, month, day,
-                       0, 0, 0, 0, is_gmt);
-               goto end;
-       }
+               year = match_to_uint(match_info, 1);
+               month = match_to_uint(match_info, 2);
+               day = match_to_uint(match_info, 3);
+               hours = match_to_uint(match_info, 4);
+               minutes = match_to_uint(match_info, 5);
 
-       /* Try `hh:mm:ss.ns` format */
-       s_ret = sscanf(str, "%u:%u:%u.%u%c", &hour, &minute, &second, &ns,
-               &dummy);
-       if (s_ret == 4) {
-               bound->time.hour = hour;
-               bound->time.minute = minute;
-               bound->time.second = second;
-               bound->time.ns = ns;
-               goto end;
-       }
+               if (match_count >= 7) {
+                       seconds = match_to_uint(match_info, 6);
+               }
 
-       /* Try `hh:mm:ss` format */
-       s_ret = sscanf(str, "%u:%u:%u%c", &hour, &minute, &second, &dummy);
-       if (s_ret == 3) {
-               bound->time.hour = hour;
-               bound->time.minute = minute;
-               bound->time.second = second;
-               bound->time.ns = 0;
-               goto end;
-       }
+               if (match_count >= 8) {
+                       nanoseconds = match_to_uint_ns(match_info, 7);
+               }
+
+               set_bound_ns_from_origin(bound, year, month, day, hours, minutes, seconds, nanoseconds, is_gmt);
 
-       /* Try `-s.ns` format */
-       s_ret = sscanf(str, "-%u.%u%c", &second, &ns, &dummy);
-       if (s_ret == 2) {
-               bound->ns_from_origin = -((int64_t) second) * NS_PER_S;
-               bound->ns_from_origin -= (int64_t) ns;
-               bound->is_set = true;
                goto end;
        }
 
-       /* Try `s.ns` format */
-       s_ret = sscanf(str, "%u.%u%c", &second, &ns, &dummy);
-       if (s_ret == 2) {
-               bound->ns_from_origin = ((int64_t) second) * NS_PER_S;
-               bound->ns_from_origin += (int64_t) ns;
-               bound->is_set = true;
+       if (compile_and_match("^" DATE_RE "$", str, &match_info)) {
+               unsigned int year = 0, month = 0, day = 0;
+
+               BT_ASSERT(g_match_info_get_match_count(match_info) == 4);
+
+               year = match_to_uint(match_info, 1);
+               month = match_to_uint(match_info, 2);
+               day = match_to_uint(match_info, 3);
+
+               set_bound_ns_from_origin(bound, year, month, day, 0, 0, 0, 0, is_gmt);
+
                goto end;
        }
 
-       /* Try `-s` format */
-       s_ret = sscanf(str, "-%u%c", &second, &dummy);
-       if (s_ret == 1) {
-               bound->ns_from_origin = -((int64_t) second) * NS_PER_S;
-               bound->is_set = true;
+       /* Try `hh:mm[:ss[.ns]]` format */
+       if (compile_and_match("^" TIME_RE "$", str, &match_info)) {
+               gint match_count = g_match_info_get_match_count(match_info);
+               BT_ASSERT(match_count >= 3 && match_count <= 5);
+               bound->time.hour = match_to_uint(match_info, 1);
+               bound->time.minute = match_to_uint(match_info, 2);
+
+               if (match_count >= 4) {
+                       bound->time.second = match_to_uint(match_info, 3);
+               }
+
+               if (match_count >= 5) {
+                       bound->time.ns = match_to_uint_ns(match_info, 4);
+               }
+
                goto end;
        }
 
-       /* Try `s` format */
-       s_ret = sscanf(str, "%u%c", &second, &dummy);
-       if (s_ret == 1) {
-               bound->ns_from_origin = (int64_t) second * NS_PER_S;
+       /* Try `[-]s[.ns]` format */
+       if (compile_and_match("^" S_NS_RE "$", str, &match_info)) {
+               gboolean is_neg, fetch_pos_ret;
+               gint start_pos, end_pos, match_count;
+               guint64 seconds, nanoseconds = 0;
+
+               match_count = g_match_info_get_match_count(match_info);
+               BT_ASSERT(match_count >= 3 && match_count <= 4);
+
+               /* Check for presence of negation sign. */
+               fetch_pos_ret = g_match_info_fetch_pos(match_info, 1, &start_pos, &end_pos);
+               BT_ASSERT(fetch_pos_ret);
+               is_neg = (end_pos - start_pos) > 0;
+
+               seconds = match_to_uint(match_info, 2);
+
+               if (match_count >= 4) {
+                       nanoseconds = match_to_uint_ns(match_info, 3);
+               }
+
+               bound->ns_from_origin = seconds * NS_PER_S + nanoseconds;
+
+               if (is_neg) {
+                       bound->ns_from_origin = -bound->ns_from_origin;
+               }
+
                bound->is_set = true;
+
                goto end;
        }
 
@@ -435,7 +534,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 = BT_SELF_COMPONENT_STATUS_ERROR;
+                       ret = -1;
                        goto end;
                }
        } else {
@@ -448,7 +547,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 = BT_SELF_COMPONENT_STATUS_ERROR;
+                       ret = -1;
                        goto end;
                }
        } else {
@@ -466,37 +565,54 @@ end:
        return ret;
 }
 
-bt_self_component_status trimmer_init(bt_self_component_filter *self_comp_flt,
+bt_component_class_init_method_status trimmer_init(
+               bt_self_component_filter *self_comp_flt,
                const bt_value *params, void *init_data)
 {
        int ret;
-       bt_self_component_status status;
+       bt_component_class_init_method_status status =
+               BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK;
+       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_SELF_COMPONENT_STATUS_NOMEM;
+               status = BT_COMPONENT_CLASS_INIT_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;
-       status = bt_self_component_filter_add_input_port(
+       add_port_status = bt_self_component_filter_add_input_port(
                self_comp_flt, in_port_name, NULL, NULL);
-       if (status != BT_SELF_COMPONENT_STATUS_OK) {
+       switch (add_port_status) {
+       case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR:
+               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
+               goto error;
+       case BT_SELF_COMPONENT_ADD_PORT_STATUS_MEMORY_ERROR:
+               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_MEMORY_ERROR;
                goto error;
+       default:
+               break;
        }
 
-       status = bt_self_component_filter_add_output_port(
+       add_port_status = bt_self_component_filter_add_output_port(
                self_comp_flt, "out", NULL, NULL);
-       if (status != BT_SELF_COMPONENT_STATUS_OK) {
+       switch (add_port_status) {
+       case BT_SELF_COMPONENT_ADD_PORT_STATUS_ERROR:
+               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
                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_SELF_COMPONENT_STATUS_ERROR;
+               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
                goto error;
        }
 
@@ -504,8 +620,8 @@ bt_self_component_status trimmer_init(bt_self_component_filter *self_comp_flt,
        goto end;
 
 error:
-       if (status == BT_SELF_COMPONENT_STATUS_OK) {
-               status = BT_SELF_COMPONENT_STATUS_ERROR;
+       if (status == BT_COMPONENT_CLASS_INIT_METHOD_STATUS_OK) {
+               status = BT_COMPONENT_CLASS_INIT_METHOD_STATUS_ERROR;
        }
 
        if (trimmer_comp) {
@@ -544,18 +660,18 @@ void destroy_trimmer_iterator_stream_state(
 }
 
 BT_HIDDEN
-bt_self_message_iterator_status trimmer_msg_iter_init(
+bt_component_class_message_iterator_init_method_status trimmer_msg_iter_init(
                bt_self_message_iterator *self_msg_iter,
                bt_self_component_filter *self_comp,
                bt_self_component_port_output *port)
 {
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_init_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK;
        struct trimmer_iterator *trimmer_it;
 
        trimmer_it = g_new0(struct trimmer_iterator, 1);
        if (!trimmer_it) {
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
                goto end;
        }
 
@@ -581,13 +697,13 @@ bt_self_message_iterator_status trimmer_msg_iter_init(
                        bt_self_component_filter_borrow_input_port_by_name(
                                self_comp, in_port_name));
        if (!trimmer_it->upstream_iter) {
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_ERROR;
                goto end;
        }
 
        trimmer_it->output_messages = g_queue_new();
        if (!trimmer_it->output_messages) {
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
                goto end;
        }
 
@@ -595,7 +711,7 @@ bt_self_message_iterator_status trimmer_msg_iter_init(
                g_direct_equal, NULL,
                (GDestroyNotify) destroy_trimmer_iterator_stream_state);
        if (!trimmer_it->stream_states) {
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_MEMORY_ERROR;
                goto end;
        }
 
@@ -603,7 +719,7 @@ bt_self_message_iterator_status trimmer_msg_iter_init(
        bt_self_message_iterator_set_data(self_msg_iter, trimmer_it);
 
 end:
-       if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK && trimmer_it) {
+       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INIT_METHOD_STATUS_OK && trimmer_it) {
                destroy_trimmer_iterator(trimmer_it);
        }
 
@@ -792,11 +908,12 @@ end:
 }
 
 static
-bt_self_message_iterator_status state_set_trimmer_iterator_bounds(
+bt_component_class_message_iterator_next_method_status
+state_set_trimmer_iterator_bounds(
                struct trimmer_iterator *trimmer_it)
 {
-       bt_message_iterator_status upstream_iter_status =
-               BT_MESSAGE_ITERATOR_STATUS_OK;
+       bt_message_iterator_next_status upstream_iter_status =
+               BT_MESSAGE_ITERATOR_NEXT_STATUS_OK;
        struct trimmer_comp *trimmer_comp = trimmer_it->trimmer_comp;
        bt_message_array_const msgs;
        uint64_t count = 0;
@@ -811,7 +928,7 @@ bt_self_message_iterator_status state_set_trimmer_iterator_bounds(
                upstream_iter_status =
                        bt_self_component_port_input_message_iterator_next(
                                trimmer_it->upstream_iter, &msgs, &count);
-               if (upstream_iter_status != BT_MESSAGE_ITERATOR_STATUS_OK) {
+               if (upstream_iter_status != BT_MESSAGE_ITERATOR_NEXT_STATUS_OK) {
                        goto end;
                }
 
@@ -868,19 +985,19 @@ found:
 
 error:
        put_messages(msgs, count);
-       upstream_iter_status = BT_MESSAGE_ITERATOR_STATUS_ERROR;
+       upstream_iter_status = BT_MESSAGE_ITERATOR_NEXT_STATUS_ERROR;
 
 end:
        return (int) upstream_iter_status;
 }
 
 static
-bt_self_message_iterator_status state_seek_initially(
+bt_component_class_message_iterator_next_method_status state_seek_initially(
                struct trimmer_iterator *trimmer_it)
 {
        struct trimmer_comp *trimmer_comp = trimmer_it->trimmer_comp;
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_next_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
 
        BT_ASSERT(trimmer_it->begin.is_set);
 
@@ -888,7 +1005,7 @@ bt_self_message_iterator_status state_seek_initially(
                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_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
@@ -901,7 +1018,7 @@ bt_self_message_iterator_status state_seek_initially(
                        BT_COMP_LOGE("Cannot make upstream message iterator initially seek: "
                                "seek-ns-from-origin=%" PRId64,
                                trimmer_it->begin.ns_from_origin);
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
@@ -909,7 +1026,7 @@ bt_self_message_iterator_status state_seek_initially(
                        trimmer_it->upstream_iter, trimmer_it->begin.ns_from_origin);
        }
 
-       if (status == BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+       if (status == BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                trimmer_it->state = TRIMMER_ITERATOR_STATE_TRIM;
        }
 
@@ -945,11 +1062,12 @@ int clock_raw_value_from_ns_from_origin(const bt_clock_class *clock_class,
 }
 
 static inline
-bt_self_message_iterator_status end_stream(struct trimmer_iterator *trimmer_it,
+bt_component_class_message_iterator_next_method_status
+end_stream(struct trimmer_iterator *trimmer_it,
                struct trimmer_iterator_stream_state *sstate)
 {
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_next_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
        uint64_t raw_value;
        const bt_clock_class *clock_class;
        int ret;
@@ -978,7 +1096,7 @@ bt_self_message_iterator_status 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_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
@@ -986,7 +1104,7 @@ bt_self_message_iterator_status end_stream(struct trimmer_iterator *trimmer_it,
                        trimmer_it->self_msg_iter, sstate->cur_packet,
                        raw_value);
                if (!msg) {
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
                        goto end;
                }
 
@@ -1009,7 +1127,7 @@ bt_self_message_iterator_status end_stream(struct trimmer_iterator *trimmer_it,
                msg = bt_message_stream_activity_end_create(
                        trimmer_it->self_msg_iter, sstate->stream);
                if (!msg) {
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
                        goto end;
                }
 
@@ -1032,7 +1150,7 @@ bt_self_message_iterator_status end_stream(struct trimmer_iterator *trimmer_it,
                ret = clock_raw_value_from_ns_from_origin(clock_class,
                        sstate->stream_act_end_ns_from_origin, &raw_value);
                if (ret) {
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
@@ -1046,7 +1164,7 @@ bt_self_message_iterator_status end_stream(struct trimmer_iterator *trimmer_it,
        msg = bt_message_stream_end_create(trimmer_it->self_msg_iter,
                sstate->stream);
        if (!msg) {
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
                goto end;
        }
 
@@ -1065,11 +1183,11 @@ end:
 }
 
 static inline
-bt_self_message_iterator_status end_iterator_streams(
+bt_component_class_message_iterator_next_method_status end_iterator_streams(
                struct trimmer_iterator *trimmer_it)
 {
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_next_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
        GHashTableIter iter;
        gpointer key, sstate;
 
@@ -1102,48 +1220,6 @@ end:
        return status;
 }
 
-static inline
-bt_self_message_iterator_status create_stream_beginning_activity_message(
-               struct trimmer_iterator *trimmer_it,
-               const bt_stream *stream,
-               const bt_clock_class *clock_class, bt_message **msg)
-{
-       bt_message *local_msg;
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
-
-       BT_ASSERT(msg);
-       BT_ASSERT(!trimmer_it->begin.is_infinite);
-
-       local_msg = bt_message_stream_activity_beginning_create(
-               trimmer_it->self_msg_iter, stream);
-       if (!local_msg) {
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
-               goto end;
-       }
-
-       if (clock_class) {
-               int ret;
-               uint64_t raw_value;
-
-               ret = clock_raw_value_from_ns_from_origin(clock_class,
-                       trimmer_it->begin.ns_from_origin, &raw_value);
-               if (ret) {
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
-                       bt_message_put_ref(local_msg);
-                       goto end;
-               }
-
-               bt_message_stream_activity_beginning_set_default_clock_snapshot(
-                       local_msg, raw_value);
-       }
-
-       BT_MESSAGE_MOVE_REF(*msg, local_msg);
-
-end:
-       return status;
-}
-
 /*
  * Handles a message which is associated to a given stream state. This
  * _could_ make the iterator's output message queue grow; this could
@@ -1161,13 +1237,14 @@ end:
  * `reached_end`.
  */
 static inline
-bt_self_message_iterator_status handle_message_with_stream_state(
+bt_component_class_message_iterator_next_method_status
+handle_message_with_stream_state(
                struct trimmer_iterator *trimmer_it, const bt_message *msg,
                struct trimmer_iterator_stream_state *sstate,
                int64_t ns_from_origin, bool *reached_end)
 {
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_next_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
        bt_message_type msg_type = bt_message_get_type(msg);
        int ret;
 
@@ -1245,7 +1322,7 @@ bt_self_message_iterator_status handle_message_with_stream_state(
 
                if (bt_clock_snapshot_get_ns_from_origin(end_cs,
                                &end_ns_from_origin)) {
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                        goto end;
                }
 
@@ -1277,7 +1354,7 @@ bt_self_message_iterator_status handle_message_with_stream_state(
                        ret = clock_raw_value_from_ns_from_origin(clock_class,
                                trimmer_it->end.ns_from_origin, &end_raw_value);
                        if (ret) {
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                                goto end;
                        }
 
@@ -1300,7 +1377,7 @@ bt_self_message_iterator_status handle_message_with_stream_state(
                        }
 
                        if (!new_msg) {
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
                                goto end;
                        }
 
@@ -1385,7 +1462,7 @@ bt_self_message_iterator_status handle_message_with_stream_state(
                } else if (sstate->stream_act_end_ns_from_origin <
                                trimmer_it->end.ns_from_origin) {
                        status = end_stream(trimmer_it, sstate);
-                       if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
@@ -1400,7 +1477,7 @@ bt_self_message_iterator_status handle_message_with_stream_state(
 end:
        /* We release the message's reference whatever the outcome */
        bt_message_put_ref(msg);
-       return BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       return BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
 }
 
 /*
@@ -1416,11 +1493,11 @@ end:
  * `reached_end`.
  */
 static inline
-bt_self_message_iterator_status handle_message(
+bt_component_class_message_iterator_next_method_status handle_message(
                struct trimmer_iterator *trimmer_it, const bt_message *msg,
                bool *reached_end)
 {
-       bt_self_message_iterator_status status;
+       bt_component_class_message_iterator_next_method_status status;
        const bt_stream *stream = NULL;
        int64_t ns_from_origin = INT64_MIN;
        bool skip;
@@ -1491,7 +1568,7 @@ bt_self_message_iterator_status handle_message(
                                        "stream-name=\"%s\"",
                                        stream, bt_stream_get_id(stream),
                                        bt_stream_get_name(stream));
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                                goto end;
                        }
 
@@ -1511,7 +1588,7 @@ bt_self_message_iterator_status handle_message(
                                        "stream-name=\"%s\"",
                                        stream, bt_stream_get_id(stream),
                                        bt_stream_get_name(stream));
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                                goto end;
                        }
 
@@ -1524,7 +1601,7 @@ bt_self_message_iterator_status handle_message(
                                        "stream-name=\"%s\"",
                                        stream, bt_stream_get_id(stream),
                                        bt_stream_get_name(stream));
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                                goto end;
                        }
 
@@ -1537,7 +1614,7 @@ bt_self_message_iterator_status handle_message(
                                        "stream-name=\"%s\"",
                                        stream, bt_stream_get_id(stream),
                                        bt_stream_get_name(stream));
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                                goto end;
                        }
 
@@ -1550,14 +1627,14 @@ bt_self_message_iterator_status handle_message(
                                        "stream-name=\"%s\"",
                                        stream, bt_stream_get_id(stream),
                                        bt_stream_get_name(stream));
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                                goto end;
                        }
 
                        sstate = g_new0(struct trimmer_iterator_stream_state,
                                1);
                        if (!sstate) {
-                               status = BT_SELF_MESSAGE_ITERATOR_STATUS_NOMEM;
+                               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_MEMORY_ERROR;
                                goto end;
                        }
 
@@ -1571,7 +1648,7 @@ bt_self_message_iterator_status handle_message(
        /* Retrieve the message's time */
        ret = get_msg_ns_from_origin(msg, &ns_from_origin, &skip);
        if (G_UNLIKELY(ret)) {
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_ERROR;
                goto end;
        }
 
@@ -1596,7 +1673,7 @@ bt_self_message_iterator_status handle_message(
                        *reached_end = true;
                } else {
                        push_message(trimmer_it, msg);
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
                        msg = NULL;
                }
        }
@@ -1628,17 +1705,17 @@ void fill_message_array_from_output_messages(
 }
 
 static inline
-bt_self_message_iterator_status state_ending(
+bt_component_class_message_iterator_next_method_status state_ending(
                struct trimmer_iterator *trimmer_it,
                bt_message_array_const msgs, uint64_t capacity,
                uint64_t *count)
 {
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_next_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
 
        if (g_queue_is_empty(trimmer_it->output_messages)) {
                trimmer_it->state = TRIMMER_ITERATOR_STATE_ENDED;
-               status = BT_SELF_MESSAGE_ITERATOR_STATUS_END;
+               status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END;
                goto end;
        }
 
@@ -1650,12 +1727,13 @@ end:
 }
 
 static inline
-bt_self_message_iterator_status state_trim(struct trimmer_iterator *trimmer_it,
+bt_component_class_message_iterator_next_method_status
+state_trim(struct trimmer_iterator *trimmer_it,
                bt_message_array_const msgs, uint64_t capacity,
                uint64_t *count)
 {
-       bt_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_next_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
        bt_message_array_const my_msgs;
        uint64_t my_count;
        uint64_t i;
@@ -1664,10 +1742,10 @@ bt_self_message_iterator_status 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_SELF_MESSAGE_ITERATOR_STATUS_OK)) {
-                       if (status == BT_SELF_MESSAGE_ITERATOR_STATUS_END) {
+               if (G_UNLIKELY(status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK)) {
+                       if (status == BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END) {
                                status = end_iterator_streams(trimmer_it);
-                               if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                               if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                        goto end;
                                }
 
@@ -1693,7 +1771,7 @@ bt_self_message_iterator_status state_trim(struct trimmer_iterator *trimmer_it,
                        my_msgs[i] = NULL;
 
                        if (G_UNLIKELY(status !=
-                                       BT_SELF_MESSAGE_ITERATOR_STATUS_OK)) {
+                                       BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK)) {
                                put_messages(my_msgs, my_count);
                                goto end;
                        }
@@ -1732,50 +1810,50 @@ end:
 }
 
 BT_HIDDEN
-bt_self_message_iterator_status trimmer_msg_iter_next(
+bt_component_class_message_iterator_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_self_message_iterator_status status =
-               BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+       bt_component_class_message_iterator_next_method_status status =
+               BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK;
 
        BT_ASSERT(trimmer_it);
 
        if (G_LIKELY(trimmer_it->state == TRIMMER_ITERATOR_STATE_TRIM)) {
                status = state_trim(trimmer_it, msgs, capacity, count);
-               if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+               if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_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_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        status = state_seek_initially(trimmer_it);
-                       if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        status = state_trim(trimmer_it, msgs, capacity, count);
-                       if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        break;
                case TRIMMER_ITERATOR_STATE_SEEK_INITIALLY:
                        status = state_seek_initially(trimmer_it);
-                       if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        status = state_trim(trimmer_it, msgs, capacity, count);
-                       if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
@@ -1783,13 +1861,13 @@ bt_self_message_iterator_status trimmer_msg_iter_next(
                case TRIMMER_ITERATOR_STATE_ENDING:
                        status = state_ending(trimmer_it, msgs, capacity,
                                count);
-                       if (status != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
+                       if (status != BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_OK) {
                                goto end;
                        }
 
                        break;
                case TRIMMER_ITERATOR_STATE_ENDED:
-                       status = BT_SELF_MESSAGE_ITERATOR_STATUS_END;
+                       status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_NEXT_METHOD_STATUS_END;
                        break;
                default:
                        abort();
This page took 0.044318 seconds and 4 git commands to generate.