src.ctf.fs: make ctf_fs_ds_file_group::stream a bt2::Stream::Shared
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 4 Dec 2023 21:34:02 +0000 (21:34 +0000)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 17 Apr 2024 17:57:53 +0000 (13:57 -0400)
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Change-Id: I0f84b26ccf43b0469da15946fa825a1255e7ab3d
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8256
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12294

src/plugins/ctf/fs-src/data-stream-file.cpp
src/plugins/ctf/fs-src/data-stream-file.hpp
src/plugins/ctf/fs-src/fs.cpp

index ade19487620e2095cad711a15bb479ad90e80e26..06e4b5f1afb64b888cb0e75eaacf59a3675091a4 100644 (file)
@@ -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;
 }
 
index 8eadd236ce8eeeb28655988c4c08c87809571861..f01ab7e9ad732b21eace88323a91ac280ddea483 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <babeltrace2/babeltrace.h>
 
+#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;
index 40e50085fa87aabf8543bcbf35a3518c38668195..1db4fe658d03ba29332fcfef19cf5774ae32d390 100644 (file)
@@ -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;
         }
 
This page took 0.035178 seconds and 4 git commands to generate.