lib: make can_seek_ns_from_origin logic use `can_seek_forward` property of iterator
[babeltrace.git] / src / plugins / utils / muxer / muxer.c
index 54238eb48f38ac2fc211efbe1784eb7ef20177a7..3e4d42057b1d49e0a00814cdd6f063f9f11da634 100644 (file)
@@ -1148,11 +1148,13 @@ void destroy_muxer_msg_iter(struct muxer_msg_iter *muxer_msg_iter)
 static
 bt_component_class_message_iterator_initialize_method_status
 muxer_msg_iter_init_upstream_iterators(struct muxer_comp *muxer_comp,
-               struct muxer_msg_iter *muxer_msg_iter)
+               struct muxer_msg_iter *muxer_msg_iter,
+               struct bt_self_message_iterator_configuration *config)
 {
        int64_t count;
        int64_t i;
        bt_component_class_message_iterator_initialize_method_status status;
+       bool can_seek_forward = true;
 
        count = bt_component_filter_get_input_port_count(
                bt_self_component_filter_as_component_filter(
@@ -1203,8 +1205,19 @@ muxer_msg_iter_init_upstream_iterators(struct muxer_comp *muxer_comp,
                        /* muxer_msg_iter_add_upstream_msg_iter() logs errors */
                        goto end;
                }
+
+               can_seek_forward = can_seek_forward &&
+                       bt_self_component_port_input_message_iterator_can_seek_forward(
+                               upstream_msg_iter);
        }
 
+       /*
+        * This iterator can seek forward if all of its iterators can seek
+        * forward.
+        */
+       bt_self_message_iterator_configuration_set_can_seek_forward(
+               config, can_seek_forward);
+
        status = BT_COMPONENT_CLASS_MESSAGE_ITERATOR_INITIALIZE_METHOD_STATUS_OK;
 
 end:
@@ -1272,7 +1285,7 @@ bt_component_class_message_iterator_initialize_method_status muxer_msg_iter_init
        }
 
        status = muxer_msg_iter_init_upstream_iterators(muxer_comp,
-               muxer_msg_iter);
+               muxer_msg_iter, config);
        if (status) {
                BT_COMP_LOGE("Cannot initialize connected input ports for muxer component's message iterator: "
                        "comp-addr=%p, muxer-comp-addr=%p, "
This page took 0.024826 seconds and 4 git commands to generate.