+ /*
+ * At this point, DS file groupes are created, but their
+ * associated stream objects do not exist yet. This is because
+ * we need to name the created stream object with the data
+ * stream file's path. We have everything we need here to do
+ * this.
+ */
+ for (i = 0; i < ctf_fs_trace->ds_file_groups->len; i++) {
+ struct ctf_fs_ds_file_group *ds_file_group =
+ g_ptr_array_index(ctf_fs_trace->ds_file_groups, i);
+ GString *name = get_stream_instance_unique_name(ds_file_group);
+
+ if (!name) {
+ goto error;
+ }
+
+ if (ds_file_group->stream_id == -1ULL) {
+ /* No stream ID: use 0 */
+ ds_file_group->stream = bt_stream_create(
+ ds_file_group->stream_class, name->str,
+ ctf_fs_trace->next_stream_id);
+ ctf_fs_trace->next_stream_id++;
+ } else {
+ /* Specific stream ID */
+ ds_file_group->stream = bt_stream_create(
+ ds_file_group->stream_class, name->str,
+ ds_file_group->stream_id);
+ }
+
+ g_string_free(name, TRUE);
+
+ if (!ds_file_group->stream) {
+ BT_LOGE("Cannot create stream for DS file group: "
+ "addr=%p, stream-name=\"%s\"",
+ ds_file_group, name->str);
+ goto error;
+ }
+ }
+