From 7916e7eb9b893d16e49f1564007a180515f62423 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Wed, 6 Dec 2023 17:29:01 +0000 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. Signed-off-by: Simon Marchi Change-Id: Iadfe9add10e5a6e3112cc0626b2ece868a013b40 Reviewed-on: https://review.lttng.org/c/babeltrace/+/8416 Reviewed-by: Philippe Proulx Reviewed-on: https://review.lttng.org/c/babeltrace/+/12352 Tested-by: jenkins --- src/plugins/ctf/lttng-live/data-stream.cpp | 7 ++++--- src/plugins/ctf/lttng-live/lttng-live.cpp | 3 --- src/plugins/ctf/lttng-live/lttng-live.hpp | 3 +-- src/plugins/ctf/lttng-live/metadata.cpp | 4 ++-- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/plugins/ctf/lttng-live/data-stream.cpp b/src/plugins/ctf/lttng-live/data-stream.cpp index 3e7386f4..cf49b7e3 100644 --- a/src/plugins/ctf/lttng-live/data-stream.cpp +++ b/src/plugins/ctf/lttng-live/data-stream.cpp @@ -78,11 +78,12 @@ 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, lttng_live_stream->viewer_stream_id); + lttng_live_stream->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, (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 9bfc2f6f..7d687b3e 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.cpp +++ b/src/plugins/ctf/lttng-live/lttng-live.cpp @@ -93,8 +93,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; } @@ -108,7 +106,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->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 d6c01ad3..610defd9 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.hpp +++ b/src/plugins/ctf/lttng-live/lttng-live.hpp @@ -190,8 +190,7 @@ struct lttng_live_trace /* ctf trace ID within the session. */ uint64_t id = 0; - /* Owned by this. */ - bt_trace *trace = nullptr; + bt2::Trace::Shared trace; bt2::TraceClass::Shared trace_class; diff --git a/src/plugins/ctf/lttng-live/metadata.cpp b/src/plugins/ctf/lttng-live/metadata.cpp index 49bdf688..7f4bc768 100644 --- a/src/plugins/ctf/lttng-live/metadata.cpp +++ b/src/plugins/ctf/lttng-live/metadata.cpp @@ -209,12 +209,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_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger, "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_CPPLOGE_APPEND_CAUSE_SPEC(metadata->logger, "Failed to configure ctf trace class"); goto error; -- 2.34.1