src.ctf.lttng-live: make lttng_live_trace::stream_iterators an std::vector
authorSimon Marchi <simon.marchi@efficios.com>
Thu, 7 Dec 2023 05:09:24 +0000 (05:09 +0000)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 17 Apr 2024 17:57:53 +0000 (13:57 -0400)
Change-Id: I745900032bc5d880a305e434afaeaeaef728708d
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8461
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12377
Tested-by: jenkins <jenkins@lttng.org>
src/plugins/ctf/lttng-live/data-stream.cpp
src/plugins/ctf/lttng-live/data-stream.hpp
src/plugins/ctf/lttng-live/lttng-live.cpp
src/plugins/ctf/lttng-live/lttng-live.hpp

index afbdc0dc475c2c44b6f0837cbb2ec5afec7a5a14..0c85fa997dc7be0e0b0a8d93d6eb84dfc02b6d38 100644 (file)
@@ -117,7 +117,7 @@ enum lttng_live_iterator_status lttng_live_lazy_msg_init(struct lttng_live_sessi
                                                          bt_self_message_iterator *self_msg_iter)
 {
     struct lttng_live_component *lttng_live = session->lttng_live_msg_iter->lttng_live_comp;
-    uint64_t trace_idx, stream_iter_idx;
+    uint64_t trace_idx;
 
     if (!session->lazy_stream_msg_init) {
         return LTTNG_LIVE_ITERATOR_STATUS_OK;
@@ -132,16 +132,13 @@ enum lttng_live_iterator_status lttng_live_lazy_msg_init(struct lttng_live_sessi
         struct lttng_live_trace *trace =
             (lttng_live_trace *) g_ptr_array_index(session->traces, trace_idx);
 
-        for (stream_iter_idx = 0; stream_iter_idx < trace->stream_iterators->len;
-             stream_iter_idx++) {
+        for (lttng_live_stream_iterator::UP& stream_iter : trace->stream_iterators) {
             struct ctf_trace_class *ctf_tc;
-            struct lttng_live_stream_iterator *stream_iter =
-                (lttng_live_stream_iterator *) g_ptr_array_index(trace->stream_iterators,
-                                                                 stream_iter_idx);
 
             if (stream_iter->msg_iter) {
                 continue;
             }
+
             ctf_tc = ctf_metadata_decoder_borrow_ctf_trace_class(trace->metadata->decoder.get());
             BT_CPPLOGD_SPEC(stream_iter->logger,
                             "Creating CTF message iterator: session-id={}, ctf-tc-addr={}, "
@@ -149,7 +146,7 @@ enum lttng_live_iterator_status lttng_live_lazy_msg_init(struct lttng_live_sessi
                             session->id, fmt::ptr(ctf_tc), stream_iter->name,
                             fmt::ptr(self_msg_iter));
             stream_iter->msg_iter =
-                ctf_msg_iter_create(ctf_tc, lttng_live->max_query_size, medops, stream_iter,
+                ctf_msg_iter_create(ctf_tc, lttng_live->max_query_size, medops, stream_iter.get(),
                                     self_msg_iter, stream_iter->logger);
             if (!stream_iter->msg_iter) {
                 BT_CPPLOGE_APPEND_CAUSE_SPEC(stream_iter->logger,
@@ -216,7 +213,7 @@ lttng_live_stream_iterator_create(struct lttng_live_session *session, uint64_t c
     stream_iter->name = nameSs.str();
 
     const auto ret = stream_iter.get();
-    g_ptr_array_add(trace->stream_iterators, stream_iter.release());
+    trace->stream_iterators.emplace_back(std::move(stream_iter));
 
     /* Track the number of active stream iterator. */
     session->lttng_live_msg_iter->active_stream_iter++;
@@ -229,8 +226,3 @@ lttng_live_stream_iterator::~lttng_live_stream_iterator()
     /* Track the number of active stream iterator. */
     this->trace->session->lttng_live_msg_iter->active_stream_iter--;
 }
-
-void lttng_live_stream_iterator_destroy(struct lttng_live_stream_iterator *stream_iter)
-{
-    delete stream_iter;
-}
index d49a9506c5eed8fce809a165cab7ea4b663fc9d6..675bbdbbaae51e7cf36c535999a7d6744d60878e 100644 (file)
@@ -18,6 +18,4 @@ struct lttng_live_stream_iterator *
 lttng_live_stream_iterator_create(struct lttng_live_session *session, uint64_t ctf_trace_id,
                                   uint64_t stream_id, bt_self_message_iterator *self_msg_iter);
 
-void lttng_live_stream_iterator_destroy(struct lttng_live_stream_iterator *stream);
-
 #endif /* LTTNG_LIVE_DATA_STREAM_H */
index 3f74c408decf1d0bdbc6e85b42dc36a33ca83198..85955bc7af178da62640250e322eb2189d801b77 100644 (file)
@@ -14,6 +14,7 @@
 #include "common/assert.h"
 #include "cpp-common/bt2c/fmt.hpp"
 #include "cpp-common/bt2c/glib-up.hpp"
+#include "cpp-common/bt2c/vector.hpp"
 #include "cpp-common/bt2s/make-unique.hpp"
 #include "cpp-common/vendor/fmt/format.h"
 
@@ -92,9 +93,6 @@ static void lttng_live_destroy_trace(struct lttng_live_trace *trace)
 {
     BT_CPPLOGD_SPEC(trace->logger, "Destroying live trace: trace-id={}", trace->id);
 
-    BT_ASSERT(trace->stream_iterators);
-    g_ptr_array_free(trace->stream_iterators, TRUE);
-
     delete trace;
 }
 
@@ -107,9 +105,6 @@ static struct lttng_live_trace *lttng_live_create_trace(struct lttng_live_sessio
     lttng_live_trace *trace = new lttng_live_trace {session->logger};
     trace->session = session;
     trace->id = trace_id;
-    trace->stream_iterators =
-        g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_stream_iterator_destroy);
-    BT_ASSERT(trace->stream_iterators);
     trace->metadata_stream_state = LTTNG_LIVE_METADATA_STREAM_STATE_NEEDED;
     g_ptr_array_add(session->traces, trace);
 
@@ -1130,7 +1125,6 @@ next_stream_iterator_for_trace(struct lttng_live_msg_iter *lttng_live_msg_iter,
     uint64_t stream_iter_idx;
 
     BT_ASSERT_DBG(live_trace);
-    BT_ASSERT_DBG(live_trace->stream_iterators);
 
     BT_CPPLOGD_SPEC(lttng_live_msg_iter->logger,
                     "Finding the next stream iterator for trace: "
@@ -1143,11 +1137,10 @@ next_stream_iterator_for_trace(struct lttng_live_msg_iter *lttng_live_msg_iter,
      * ensure monotonicity.
      */
     stream_iter_idx = 0;
-    while (stream_iter_idx < live_trace->stream_iterators->len) {
+    while (stream_iter_idx < live_trace->stream_iterators.size()) {
         bool stream_iter_is_ended = false;
-        struct lttng_live_stream_iterator *stream_iter =
-            (lttng_live_stream_iterator *) g_ptr_array_index(live_trace->stream_iterators,
-                                                             stream_iter_idx);
+        lttng_live_stream_iterator *stream_iter =
+            live_trace->stream_iterators[stream_iter_idx].get();
 
         /*
          * If there is no current message for this stream, go fetch
@@ -1268,7 +1261,7 @@ next_stream_iterator_for_trace(struct lttng_live_msg_iter *lttng_live_msg_iter,
              * removed element with the array's last
              * element.
              */
-            g_ptr_array_remove_index_fast(live_trace->stream_iterators, stream_iter_idx);
+            bt2c::vectorFastRemove(live_trace->stream_iterators, stream_iter_idx);
         }
     }
 
@@ -1280,7 +1273,7 @@ next_stream_iterator_for_trace(struct lttng_live_msg_iter *lttng_live_msg_iter,
          * The only case where we don't have a candidate for this trace
          * is if we reached the end of all the iterators.
          */
-        BT_ASSERT(live_trace->stream_iterators->len == 0);
+        BT_ASSERT(live_trace->stream_iterators.empty());
         stream_iter_status = LTTNG_LIVE_ITERATOR_STATUS_END;
     }
 
index 2fd68425ff638878e8000c09a99e2610bca89521..d8a0f2a7de23c653c0d5f33c6748013bf84b9ee3 100644 (file)
@@ -198,9 +198,7 @@ struct lttng_live_trace
 
     const bt_clock_class *clock_class = nullptr;
 
-    /* Array of pointers to struct lttng_live_stream_iterator. */
-    /* Owned by this. */
-    GPtrArray *stream_iterators = nullptr;
+    std::vector<lttng_live_stream_iterator::UP> stream_iterators;
 
     enum lttng_live_metadata_stream_state metadata_stream_state =
         LTTNG_LIVE_METADATA_STREAM_STATE_NEEDED;
This page took 0.027606 seconds and 4 git commands to generate.