From 071ce18042f46c7734a0278e26137156feedf832 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Tue, 26 Jul 2022 17:28:38 -0400 Subject: [PATCH] src.ctf.lttng-live: make lttng_live_trace::trace a bt2::Trace::Shared Use the C++ wrapper to hold the reference to the trace. Wrap it in an optional, since it's not assigned at creation. Signed-off-by: Simon Marchi Change-Id: Iadfe9add10e5a6e3112cc0626b2ece868a013b40 Reviewed-on: https://review.lttng.org/c/babeltrace/+/8416 Reviewed-by: Philippe Proulx --- src/plugins/ctf/lttng-live/data-stream.cpp | 6 ++++-- src/plugins/ctf/lttng-live/lttng-live.cpp | 3 --- src/plugins/ctf/lttng-live/lttng-live.hpp | 2 +- src/plugins/ctf/lttng-live/metadata.cpp | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/plugins/ctf/lttng-live/data-stream.cpp b/src/plugins/ctf/lttng-live/data-stream.cpp index e1607f1ef..3856608b4 100644 --- a/src/plugins/ctf/lttng-live/data-stream.cpp +++ b/src/plugins/ctf/lttng-live/data-stream.cpp @@ -84,10 +84,12 @@ static bt_stream *medop_borrow_stream(bt_stream_class *stream_class, int64_t str * is unique for a live viewer session. */ lttng_live_stream->stream = bt_stream_create_with_id( - stream_class, lttng_live_stream->trace->trace, lttng_live_stream->viewer_stream_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, (uint64_t) stream_id); + stream_class, (*lttng_live_stream->trace->trace)->libObjPtr(), + (uint64_t) stream_id); } if (!lttng_live_stream->stream) { diff --git a/src/plugins/ctf/lttng-live/lttng-live.cpp b/src/plugins/ctf/lttng-live/lttng-live.cpp index 0e0d4a0c4..fe0687258 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.cpp +++ b/src/plugins/ctf/lttng-live/lttng-live.cpp @@ -151,8 +151,6 @@ static void lttng_live_destroy_trace(struct lttng_live_trace *trace) BT_ASSERT(trace->stream_iterators); g_ptr_array_free(trace->stream_iterators, TRUE); - BT_TRACE_PUT_REF_AND_RESET(trace->trace); - lttng_live_metadata_fini(trace); delete trace; } @@ -169,7 +167,6 @@ static struct lttng_live_trace *lttng_live_create_trace(struct lttng_live_sessio lttng_live_trace *trace = new lttng_live_trace {logCfg}; trace->session = session; trace->id = trace_id; - trace->trace = NULL; trace->stream_iterators = g_ptr_array_new_with_free_func((GDestroyNotify) lttng_live_stream_iterator_destroy); BT_ASSERT(trace->stream_iterators); diff --git a/src/plugins/ctf/lttng-live/lttng-live.hpp b/src/plugins/ctf/lttng-live/lttng-live.hpp index 329393fbd..574c2de4d 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.hpp +++ b/src/plugins/ctf/lttng-live/lttng-live.hpp @@ -173,7 +173,7 @@ struct lttng_live_trace uint64_t id = 0; /* Owned by this. */ - bt_trace *trace = nullptr; + nonstd::optional trace; nonstd::optional trace_class; diff --git a/src/plugins/ctf/lttng-live/metadata.cpp b/src/plugins/ctf/lttng-live/metadata.cpp index be0db63d0..fc573e9c4 100644 --- a/src/plugins/ctf/lttng-live/metadata.cpp +++ b/src/plugins/ctf/lttng-live/metadata.cpp @@ -218,12 +218,12 @@ enum lttng_live_iterator_status lttng_live_metadata_update(struct lttng_live_tra ctf_metadata_decoder_borrow_ctf_trace_class(metadata->decoder.get()); trace->trace_class = ctf_metadata_decoder_get_ir_trace_class(metadata->decoder.get()); - trace->trace = bt_trace_create((*trace->trace_class)->libObjPtr()); + trace->trace = (*trace->trace_class)->instantiate(); if (!trace->trace) { BT_CLOGE_APPEND_CAUSE("Failed to create bt_trace"); goto error; } - if (ctf_trace_class_configure_ir_trace(tc, trace->trace)) { + if (ctf_trace_class_configure_ir_trace(tc, (*trace->trace)->libObjPtr())) { BT_CLOGE_APPEND_CAUSE("Failed to configure ctf trace class"); goto error; } -- 2.34.1