From: Simon Marchi Date: Mon, 4 Dec 2023 21:34:02 +0000 (+0000) Subject: src.ctf.fs: make ctf_fs_ds_file_group::stream a bt2::Stream::Shared X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=be215bcd720dbe2b1dbad01b98457962c5844769 src.ctf.fs: make ctf_fs_ds_file_group::stream a bt2::Stream::Shared Signed-off-by: Simon Marchi Change-Id: I0f84b26ccf43b0469da15946fa825a1255e7ab3d Reviewed-on: https://review.lttng.org/c/babeltrace/+/8256 Reviewed-by: Philippe Proulx Reviewed-on: https://review.lttng.org/c/babeltrace/+/12294 --- diff --git a/src/plugins/ctf/fs-src/data-stream-file.cpp b/src/plugins/ctf/fs-src/data-stream-file.cpp index ade19487..06e4b5f1 100644 --- a/src/plugins/ctf/fs-src/data-stream-file.cpp +++ b/src/plugins/ctf/fs-src/data-stream-file.cpp @@ -327,9 +327,9 @@ ctf_fs_ds_group_medops_set_file(struct ctf_fs_ds_group_medops_data *data, ctf_fs_ds_file_destroy(data->file); /* Create the new file. */ - data->file = - ctf_fs_ds_file_create(data->ds_file_group->ctf_fs_trace, data->ds_file_group->stream, - index_entry->path, data->logger); + data->file = ctf_fs_ds_file_create(data->ds_file_group->ctf_fs_trace, + data->ds_file_group->stream->libObjPtr(), + index_entry->path, data->logger); if (!data->file) { BT_CPPLOGE_APPEND_CAUSE_SPEC(data->logger, "failed to create ctf_fs_ds_file."); status = CTF_MSG_ITER_MEDIUM_STATUS_ERROR; @@ -902,7 +902,6 @@ static void ctf_fs_ds_file_group_destroy(struct ctf_fs_ds_file_group *ds_file_gr return; } - bt_stream_put_ref(ds_file_group->stream); delete ds_file_group; } diff --git a/src/plugins/ctf/fs-src/data-stream-file.hpp b/src/plugins/ctf/fs-src/data-stream-file.hpp index 8eadd236..f01ab7e9 100644 --- a/src/plugins/ctf/fs-src/data-stream-file.hpp +++ b/src/plugins/ctf/fs-src/data-stream-file.hpp @@ -16,6 +16,7 @@ #include +#include "cpp-common/bt2/trace-ir.hpp" #include "cpp-common/bt2c/data-len.hpp" #include "cpp-common/bt2c/logging.hpp" @@ -136,8 +137,7 @@ struct ctf_fs_ds_file_group /* Owned by this */ struct ctf_stream_class *sc = nullptr; - /* Owned by this */ - bt_stream *stream = nullptr; + bt2::Stream::Shared stream; /* Stream (instance) ID; -1ULL means none */ uint64_t stream_id = 0; diff --git a/src/plugins/ctf/fs-src/fs.cpp b/src/plugins/ctf/fs-src/fs.cpp index 40e50085..1db4fe65 100644 --- a/src/plugins/ctf/fs-src/fs.cpp +++ b/src/plugins/ctf/fs-src/fs.cpp @@ -1835,18 +1835,20 @@ static int create_streams_for_trace(struct ctf_fs_trace *ctf_fs_trace) BT_ASSERT(ds_file_group->sc->ir_sc); BT_ASSERT(ctf_fs_trace->trace); + bt_stream *stream; + 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); + 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); + stream = bt_stream_create_with_id(ds_file_group->sc->ir_sc, ctf_fs_trace->trace, + (uint64_t) ds_file_group->stream_id); } - if (!ds_file_group->stream) { + if (!stream) { BT_CPPLOGE_APPEND_CAUSE_SPEC(ctf_fs_trace->logger, "Cannot create stream for DS file group: " "addr={}, stream-name=\"{}\"", @@ -1854,12 +1856,14 @@ static int create_streams_for_trace(struct ctf_fs_trace *ctf_fs_trace) goto error; } - ret = bt_stream_set_name(ds_file_group->stream, name->str); + ds_file_group->stream = bt2::Stream::Shared::createWithoutRef(stream); + + ret = bt_stream_set_name(ds_file_group->stream->libObjPtr(), name->str); if (ret) { BT_CPPLOGE_APPEND_CAUSE_SPEC(ctf_fs_trace->logger, "Cannot set stream's name: " "addr={}, stream-name=\"{}\"", - fmt::ptr(ds_file_group->stream), name->str); + fmt::ptr(ds_file_group->stream->libObjPtr()), name->str); goto error; }