src.ctf.lttng-live: make lttng_live_stream_iterator::stream a bt2::Stream::Shared
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 22 Jun 2022 20:27:30 +0000 (16:27 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 23 Aug 2022 16:06:16 +0000 (12:06 -0400)
Wrapped in an optional because it's not set at construction time.

Change-Id: Ia38f2feba1040749df692574e67861c81a73e8df
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8454
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
src/plugins/ctf/lttng-live/data-stream.cpp
src/plugins/ctf/lttng-live/lttng-live.cpp
src/plugins/ctf/lttng-live/lttng-live.hpp

index 3856608b4a7f8fc7a7988d42880250bc482f9671..a58551ee02155c971835ed1dcb986f8975995f4b 100644 (file)
@@ -76,6 +76,8 @@ static bt_stream *medop_borrow_stream(bt_stream_class *stream_class, int64_t str
                  "class %" PRId64,
                  lttng_live_stream->name->str, stream_id, stream_class_id);
 
+        bt_stream *stream;
+
         if (stream_id < 0) {
             /*
              * No stream instance ID in the stream. It's possible
@@ -83,27 +85,28 @@ static bt_stream *medop_borrow_stream(bt_stream_class *stream_class, int64_t str
              * LTTng. In these cases, use the viewer_stream_id that
              * is unique for a live viewer session.
              */
-            lttng_live_stream->stream = bt_stream_create_with_id(
-                stream_class, (*lttng_live_stream->trace->trace)->libObjPtr(),
-                lttng_live_stream->viewer_stream_id);
+            stream = bt_stream_create_with_id(stream_class,
+                                              (*lttng_live_stream->trace->trace)->libObjPtr(),
+                                              lttng_live_stream->viewer_stream_id);
         } else {
-            lttng_live_stream->stream = bt_stream_create_with_id(
-                stream_class, (*lttng_live_stream->trace->trace)->libObjPtr(),
-                (uint64_t) stream_id);
+            stream = bt_stream_create_with_id(stream_class,
+                                              (*lttng_live_stream->trace->trace)->libObjPtr(),
+                                              (uint64_t) stream_id);
         }
 
-        if (!lttng_live_stream->stream) {
+        if (!stream) {
             BT_CLOGE_APPEND_CAUSE("Cannot create stream %s (stream class ID "
                                   "%" PRId64 ", stream ID %" PRIu64 ")",
                                   lttng_live_stream->name->str, stream_class_id, stream_id);
-            goto end;
+            return nullptr;
         }
 
-        bt_stream_set_name(lttng_live_stream->stream, lttng_live_stream->name->str);
+        lttng_live_stream->stream = bt2::Stream::Shared::createWithoutRef(stream);
+
+        (*lttng_live_stream->stream)->name(lttng_live_stream->name->str);
     }
 
-end:
-    return lttng_live_stream->stream;
+    return (*lttng_live_stream->stream)->libObjPtr();
 }
 
 static struct ctf_msg_iter_medium_ops medops = {
@@ -246,10 +249,6 @@ void lttng_live_stream_iterator_destroy(struct lttng_live_stream_iterator *strea
         return;
     }
 
-    if (stream_iter->stream) {
-        BT_STREAM_PUT_REF_AND_RESET(stream_iter->stream);
-    }
-
     if (stream_iter->msg_iter) {
         ctf_msg_iter_destroy(stream_iter->msg_iter);
     }
index c83bd090faa9c2ecf8214c2c1c1b8dc4993e026f..cddd7ca0b40da7bef89880028a6060132598887d 100644 (file)
@@ -1112,7 +1112,7 @@ handle_late_message(struct lttng_live_msg_iter *lttng_live_msg_iter,
         goto end;
     }
 
-    stream_class = bt_stream_borrow_class_const(stream_iter->stream);
+    stream_class = bt_stream_borrow_class_const((*stream_iter->stream)->libObjPtr());
     clock_class = bt_stream_class_borrow_default_clock_class_const(stream_class);
 
     ts_ns_status = bt_clock_class_cycles_to_ns_from_origin(
@@ -1145,13 +1145,13 @@ handle_late_message(struct lttng_live_msg_iter *lttng_live_msg_iter,
     switch (bt_message_get_type(late_msg)) {
     case BT_MESSAGE_TYPE_DISCARDED_EVENTS:
         adjust_status = adjust_discarded_events_message(
-            lttng_live_msg_iter->self_msg_iter, stream_iter->stream, late_msg, &adjusted_message,
-            stream_iter->last_inactivity_ts.value);
+            lttng_live_msg_iter->self_msg_iter, (*stream_iter->stream)->libObjPtr(), late_msg,
+            &adjusted_message, stream_iter->last_inactivity_ts.value);
         break;
     case BT_MESSAGE_TYPE_DISCARDED_PACKETS:
         adjust_status = adjust_discarded_packets_message(
-            lttng_live_msg_iter->self_msg_iter, stream_iter->stream, late_msg, &adjusted_message,
-            stream_iter->last_inactivity_ts.value);
+            lttng_live_msg_iter->self_msg_iter, (*stream_iter->stream)->libObjPtr(), late_msg,
+            &adjusted_message, stream_iter->last_inactivity_ts.value);
         break;
     default:
         bt_common_abort();
index eb1e8efd8a2bc401180cb20732244ec2e5d35ad3..9f7d25346e1612a6ccf46b906a135155162a5057 100644 (file)
@@ -58,7 +58,7 @@ struct lttng_live_stream_iterator
     const bt2_common::LogCfg logCfg;
 
     /* Owned by this. */
-    bt_stream *stream = nullptr;
+    nonstd::optional<bt2::Stream::Shared> stream;
 
     /* Weak reference. */
     struct lttng_live_trace *trace = nullptr;
This page took 0.029711 seconds and 5 git commands to generate.