}
msg_iter_data->ds_file_info_index++;
- bt_msg_iter_reset(msg_iter_data->msg_iter);
+ bt_msg_iter_reset_for_next_stream_file(
+ msg_iter_data->msg_iter);
set_msg_iter_emits_stream_beginning_end_messages(
msg_iter_data);
return status;
}
+static
+int ctf_fs_iterator_reset(struct ctf_fs_msg_iter_data *msg_iter_data)
+{
+ int ret;
+
+ msg_iter_data->ds_file_info_index = 0;
+ ret = msg_iter_data_set_current_ds_file(msg_iter_data);
+ if (ret) {
+ goto end;
+ }
+
+ bt_msg_iter_reset(msg_iter_data->msg_iter);
+ set_msg_iter_emits_stream_beginning_end_messages(msg_iter_data);
+
+end:
+ return ret;
+}
+
+BT_HIDDEN
+bt_self_message_iterator_status ctf_fs_iterator_seek_beginning(
+ bt_self_message_iterator *it)
+{
+ struct ctf_fs_msg_iter_data *msg_iter_data =
+ bt_self_message_iterator_get_data(it);
+ bt_self_message_iterator_status status =
+ BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
+
+ BT_ASSERT(msg_iter_data);
+ if (ctf_fs_iterator_reset(msg_iter_data)) {
+ status = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
+ }
+
+ return status;
+}
+
+BT_HIDDEN
void ctf_fs_iterator_finalize(bt_self_message_iterator *it)
{
ctf_fs_msg_iter_data_destroy(
bt_self_message_iterator_get_data(it));
}
+BT_HIDDEN
bt_self_message_iterator_status ctf_fs_iterator_init(
bt_self_message_iterator *self_msg_iter,
bt_self_component_source *self_comp,
struct ctf_fs_msg_iter_data *msg_iter_data = NULL;
bt_self_message_iterator_status ret =
BT_SELF_MESSAGE_ITERATOR_STATUS_OK;
- int iret;
port_data = bt_self_component_port_get_data(
bt_self_component_port_output_as_self_component_port(
}
msg_iter_data->ds_file_group = port_data->ds_file_group;
- iret = msg_iter_data_set_current_ds_file(msg_iter_data);
- if (iret) {
+ if (ctf_fs_iterator_reset(msg_iter_data)) {
ret = BT_SELF_MESSAGE_ITERATOR_STATUS_ERROR;
goto error;
}
- set_msg_iter_emits_stream_beginning_end_messages(msg_iter_data);
bt_self_message_iterator_set_data(self_msg_iter,
msg_iter_data);
if (ret != BT_SELF_MESSAGE_ITERATOR_STATUS_OK) {
goto error;
}
- /*
- * create_ds_file_groups() created all the streams that this
- * trace needs. There won't be any more. Therefore it is safe to
- * make this trace static.
- */
- if (ctf_fs_trace->trace) {
- (void) bt_trace_make_static(ctf_fs_trace->trace);
- }
-
goto end;
error: