struct bt_self_component_port_input_message_iterator **message_iterator)
{
typedef enum bt_component_class_message_iterator_init_method_status (*init_method_t)(
- void *, void *, void *);
+ void *, void *, void *, void *);
init_method_t init_method = NULL;
struct bt_self_component_port_input_message_iterator *iterator =
enum bt_component_class_message_iterator_init_method_status iter_status;
BT_LIB_LOGD("Calling user's initialization method: %!+i", iterator);
- iter_status = init_method(iterator, upstream_comp,
+ iter_status = init_method(iterator, &iterator->config, upstream_comp,
upstream_port);
BT_LOGD("User method returned: status=%s",
bt_common_func_status_string(iter_status));
status = iter_status;
goto error;
}
+
+ iterator->config.frozen = true;
}
if (downstream_msg_iter) {
"%!+i, user-data-addr=%p", iterator, data);
}
+void bt_self_message_iterator_configuration_set_can_seek_forward(
+ bt_self_message_iterator_configuration *config,
+ bt_bool can_seek_forward)
+{
+ BT_ASSERT_PRE_NON_NULL(config, "Message iterator configuration");
+ BT_ASSERT_PRE_DEV_HOT(config, "Message iterator configuration", "");
+
+ config->can_seek_forward = can_seek_forward;
+}
+
/*
* Validate that the default clock snapshot in `msg` doesn't make us go back in
* time.
return status;
}
+bt_bool
+bt_self_component_port_input_message_iterator_can_seek_forward(
+ bt_self_component_port_input_message_iterator *iterator)
+{
+ BT_ASSERT_PRE_NON_NULL(iterator, "Message iterator");
+
+ return iterator->config.can_seek_forward;
+}
+
/*
* Structure used to record the state of a given stream during the fast-forward
* phase of an auto-seek.