src.ctf.lttng-live: introduce and use lttng_live_stream_iterator::UP
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 26 Jul 2022 21:39:46 +0000 (17:39 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 23 Aug 2022 16:06:16 +0000 (12:06 -0400)
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Change-Id: I50c0db7fb4a86d5081a3c049e1dc76b6311507aa
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8460
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
src/plugins/ctf/lttng-live/data-stream.cpp
src/plugins/ctf/lttng-live/lttng-live.hpp

index 64407f072e65a190c56eb375ead1a48a60458d18..88dab82669308f5b1718e7e3b0ccb1a08ba18861 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "cpp-common/cfg-logging.hpp"
 #include "../common/src/msg-iter/msg-iter.hpp"
+#include "cpp-common/make-unique.hpp"
 #include "common/assert.h"
 #include "compat/mman.h"
 #include "data-stream.hpp"
@@ -186,11 +187,12 @@ lttng_live_stream_iterator_create(struct lttng_live_session *session, uint64_t c
 
     lttng_live = session->lttng_live_msg_iter->lttng_live_comp;
 
-    lttng_live_stream_iterator *stream_iter = new lttng_live_stream_iterator {logCfg};
+    lttng_live_stream_iterator::UP stream_iter =
+        bt2_common::makeUnique<lttng_live_stream_iterator>(logCfg);
     trace = lttng_live_session_borrow_or_create_trace_by_id(session, ctf_trace_id);
     if (!trace) {
         BT_CLOGE_APPEND_CAUSE("Failed to borrow CTF trace.");
-        goto error;
+        return nullptr;
     }
 
     stream_iter->trace = trace;
@@ -208,27 +210,24 @@ lttng_live_stream_iterator_create(struct lttng_live_session *session, uint64_t c
             ctf_metadata_decoder_borrow_ctf_trace_class(trace->metadata->decoder.get());
         BT_ASSERT(!stream_iter->msg_iter);
         stream_iter->msg_iter = ctf_msg_iter_create(ctf_tc, lttng_live->max_query_size, medops,
-                                                    stream_iter, self_msg_iter, logCfg);
+                                                    stream_iter.get(), self_msg_iter, logCfg);
         if (!stream_iter->msg_iter) {
             BT_CLOGE_APPEND_CAUSE("Failed to create CTF message iterator");
-            goto error;
+            return nullptr;
         }
     }
     stream_iter->buf.resize(lttng_live->max_query_size);
 
     nameSs << STREAM_NAME_PREFIX << stream_iter->viewer_stream_id;
     stream_iter->name = nameSs.str();
-    g_ptr_array_add(trace->stream_iterators, stream_iter);
+
+    lttng_live_stream_iterator *ret = stream_iter.get();
+    g_ptr_array_add(trace->stream_iterators, stream_iter.release());
 
     /* Track the number of active stream iterator. */
     session->lttng_live_msg_iter->active_stream_iter++;
 
-    goto end;
-error:
-    delete stream_iter;
-    stream_iter = NULL;
-end:
-    return stream_iter;
+    return ret;
 }
 
 lttng_live_stream_iterator::~lttng_live_stream_iterator()
index cdfcb99e928fb6d5ad1eeaa6f702e7f416e30edd..3884125aba7163414bfd344ec8acb98a8b74ef61 100644 (file)
@@ -51,6 +51,8 @@ enum lttng_live_stream_state
 /* Iterator over a live stream. */
 struct lttng_live_stream_iterator
 {
+    using UP = std::unique_ptr<lttng_live_stream_iterator>;
+
     explicit lttng_live_stream_iterator(const bt2_common::LogCfg& logCfgParam) noexcept :
         logCfg {logCfgParam}
     {
This page took 0.026359 seconds and 5 git commands to generate.