}
bt_stream_put_ref(ds_file_group->stream);
- bt_stream_class_put_ref(ds_file_group->stream_class);
g_free(ds_file_group);
}
static
struct ctf_fs_ds_file_group *ctf_fs_ds_file_group_create(
struct ctf_fs_trace *ctf_fs_trace,
- bt_stream_class *stream_class,
+ struct ctf_stream_class *sc,
uint64_t stream_instance_id)
{
struct ctf_fs_ds_file_group *ds_file_group;
}
ds_file_group->stream_id = stream_instance_id;
- BT_ASSERT(stream_class);
- ds_file_group->stream_class = stream_class;
- bt_stream_class_get_ref(ds_file_group->stream_class);
+ BT_ASSERT(sc);
+ ds_file_group->sc = sc;
ds_file_group->ctf_fs_trace = ctf_fs_trace;
goto end;
int add_ds_file_to_ds_file_group(struct ctf_fs_trace *ctf_fs_trace,
const char *path)
{
- bt_stream_class *stream_class = NULL;
int64_t stream_instance_id = -1;
int64_t begin_ns = -1;
struct ctf_fs_ds_file_group *ds_file_group = NULL;
sc = ctf_trace_class_borrow_stream_class_by_id(ds_file->metadata->tc,
props.stream_class_id);
BT_ASSERT(sc);
- stream_class = sc->ir_sc;
- BT_ASSERT(stream_class);
stream_instance_id = props.data_stream_id;
if (props.snapshots.beginning_clock != UINT64_C(-1)) {
* group.
*/
ds_file_group = ctf_fs_ds_file_group_create(ctf_fs_trace,
- stream_class, stream_instance_id);
+ sc, UINT64_C(-1));
if (!ds_file_group) {
goto error;
}
ds_file_group = g_ptr_array_index(
ctf_fs_trace->ds_file_groups, i);
- if (ds_file_group->stream_class == stream_class &&
+ if (ds_file_group->sc == sc &&
ds_file_group->stream_id ==
stream_instance_id) {
break;
if (!ds_file_group) {
ds_file_group = ctf_fs_ds_file_group_create(ctf_fs_trace,
- stream_class, stream_instance_id);
+ sc, stream_instance_id);
if (!ds_file_group) {
goto error;
}
goto error;
}
- if (ds_file_group->stream_id == UINT64_C(-1)) {
- /* No stream ID: use 0 */
- ds_file_group->stream = bt_stream_create_with_id(
- ds_file_group->stream_class,
- ctf_fs_trace->trace,
- ctf_fs_trace->next_stream_id);
- ctf_fs_trace->next_stream_id++;
+ if (ds_file_group->sc->ir_sc) {
+ BT_ASSERT(ctf_fs_trace->trace);
+
+ if (ds_file_group->stream_id == UINT64_C(-1)) {
+ /* No stream ID: use 0 */
+ ds_file_group->stream = bt_stream_create_with_id(
+ ds_file_group->sc->ir_sc,
+ ctf_fs_trace->trace,
+ ctf_fs_trace->next_stream_id);
+ ctf_fs_trace->next_stream_id++;
+ } else {
+ /* Specific stream ID */
+ ds_file_group->stream = bt_stream_create_with_id(
+ ds_file_group->sc->ir_sc,
+ ctf_fs_trace->trace,
+ (uint64_t) ds_file_group->stream_id);
+ }
} else {
- /* Specific stream ID */
- ds_file_group->stream = bt_stream_create_with_id(
- ds_file_group->stream_class,
- ctf_fs_trace->trace,
- (uint64_t) ds_file_group->stream_id);
+ ds_file_group->stream = NULL;
}
if (!ds_file_group->stream) {
}
static
-int add_stream_ids(bt_value *info, const bt_stream *stream)
+int add_stream_ids(bt_value *info, struct ctf_fs_ds_file_group *ds_file_group)
{
int ret = 0;
- int64_t stream_class_id, stream_instance_id;
bt_value_status status;
- const bt_stream_class *stream_class = NULL;
- stream_instance_id = bt_stream_get_id(stream);
- if (stream_instance_id != -1) {
+ if (ds_file_group->stream_id != UINT64_C(-1)) {
status = bt_value_map_insert_integer_entry(info, "id",
- stream_instance_id);
+ (int64_t) ds_file_group->stream_id);
if (status != BT_VALUE_STATUS_OK) {
ret = -1;
goto end;
}
}
- stream_class = bt_stream_borrow_class_const(stream);
- if (!stream_class) {
- ret = -1;
- goto end;
- }
-
- stream_class_id = bt_stream_class_get_id(stream_class);
- if (stream_class_id == -1) {
- ret = -1;
- goto end;
- }
-
- status = bt_value_map_insert_integer_entry(info, "class-id", stream_class_id);
+ status = bt_value_map_insert_integer_entry(info, "class-id",
+ (int64_t) ds_file_group->sc->id);
if (status != BT_VALUE_STATUS_OK) {
ret = -1;
goto end;
for (file_idx = 0; file_idx < group->ds_file_infos->len; file_idx++) {
int64_t file_begin_epoch, file_end_epoch;
struct ctf_fs_ds_file_info *info =
- g_ptr_array_index(group->ds_file_infos,
- file_idx);
+ g_ptr_array_index(group->ds_file_infos,
+ file_idx);
if (!info->index || info->index->entries->len == 0) {
BT_LOGW("Cannot determine range of unindexed stream file \'%s\'",
goto end;
}
- ret = add_stream_ids(group_info, group->stream);
+ ret = add_stream_ids(group_info, group);
if (ret) {
goto end;
}