From e66be7c33aeea04c1614fbe9f2492187c808dda7 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 7 Dec 2023 04:20:49 +0000 Subject: [PATCH] src.ctf.lttng-live: introduce lttng_live_metadata::UP and use it Change-Id: I3f902be075b8274485b6ce88b1b7fa1617e79cff Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/8453 Reviewed-by: Philippe Proulx Reviewed-on: https://review.lttng.org/c/babeltrace/+/12368 Tested-by: jenkins --- src/plugins/ctf/lttng-live/lttng-live.cpp | 1 - src/plugins/ctf/lttng-live/lttng-live.hpp | 4 ++- src/plugins/ctf/lttng-live/metadata.cpp | 28 ++++++------------- src/plugins/ctf/lttng-live/metadata.hpp | 2 -- .../ctf/lttng-live/viewer-connection.cpp | 2 +- 5 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/plugins/ctf/lttng-live/lttng-live.cpp b/src/plugins/ctf/lttng-live/lttng-live.cpp index 0ffee1fa..4d4dd162 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.cpp +++ b/src/plugins/ctf/lttng-live/lttng-live.cpp @@ -95,7 +95,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); - lttng_live_metadata_fini(trace); delete trace; } diff --git a/src/plugins/ctf/lttng-live/lttng-live.hpp b/src/plugins/ctf/lttng-live/lttng-live.hpp index 8dbd804f..a8ec55fc 100644 --- a/src/plugins/ctf/lttng-live/lttng-live.hpp +++ b/src/plugins/ctf/lttng-live/lttng-live.hpp @@ -140,6 +140,8 @@ struct lttng_live_stream_iterator struct lttng_live_metadata { + using UP = std::unique_ptr; + explicit lttng_live_metadata(const bt2c::Logger& parentLogger) : logger {parentLogger, "PLUGIN/SRC.CTF.LTTNG-LIVE/METADATA"} { @@ -194,7 +196,7 @@ struct lttng_live_trace bt2::TraceClass::Shared trace_class; - struct lttng_live_metadata *metadata = nullptr; + lttng_live_metadata::UP metadata; const bt_clock_class *clock_class = nullptr; diff --git a/src/plugins/ctf/lttng-live/metadata.cpp b/src/plugins/ctf/lttng-live/metadata.cpp index b0a3c5e7..7617d04a 100644 --- a/src/plugins/ctf/lttng-live/metadata.cpp +++ b/src/plugins/ctf/lttng-live/metadata.cpp @@ -8,6 +8,7 @@ #include "compat/memstream.h" #include "cpp-common/bt2c/libc-up.hpp" +#include "cpp-common/bt2s/make-unique.hpp" #include "../common/src/metadata/tsdl/ctf-meta-configure-ir-trace.hpp" #include "../common/src/metadata/tsdl/decoder.hpp" @@ -87,7 +88,7 @@ end: enum lttng_live_iterator_status lttng_live_metadata_update(struct lttng_live_trace *trace) { struct lttng_live_session *session = trace->session; - struct lttng_live_metadata *metadata = trace->metadata; + struct lttng_live_metadata *metadata = trace->metadata.get(); std::vector metadataBuf; bool keep_receiving; bt2c::FileUP fp; @@ -250,34 +251,21 @@ int lttng_live_metadata_create_stream(struct lttng_live_session *session, uint64 cfg.self_comp = session->self_comp; cfg.create_trace_class = true; - lttng_live_metadata *metadata = new lttng_live_metadata {session->logger}; + auto metadata = bt2s::make_unique(session->logger); metadata->stream_id = stream_id; metadata->decoder = ctf_metadata_decoder_create(&cfg); if (!metadata->decoder) { BT_CPPLOGE_APPEND_CAUSE_SPEC(session->logger, "Failed to create CTF metadata decoder"); - goto error; + return -1; } + trace = lttng_live_session_borrow_or_create_trace_by_id(session, ctf_trace_id); if (!trace) { BT_CPPLOGE_APPEND_CAUSE_SPEC(session->logger, "Failed to borrow trace"); - goto error; + return -1; } - trace->metadata = metadata; - return 0; - -error: - delete metadata; - return -1; -} - -void lttng_live_metadata_fini(struct lttng_live_trace *trace) -{ - struct lttng_live_metadata *metadata = trace->metadata; - if (!metadata) { - return; - } - trace->metadata = NULL; - delete metadata; + trace->metadata = std::move(metadata); + return 0; } diff --git a/src/plugins/ctf/lttng-live/metadata.hpp b/src/plugins/ctf/lttng-live/metadata.hpp index 49596c3b..7c2d7659 100644 --- a/src/plugins/ctf/lttng-live/metadata.hpp +++ b/src/plugins/ctf/lttng-live/metadata.hpp @@ -16,6 +16,4 @@ int lttng_live_metadata_create_stream(struct lttng_live_session *session, uint64 enum lttng_live_iterator_status lttng_live_metadata_update(struct lttng_live_trace *trace); -void lttng_live_metadata_fini(struct lttng_live_trace *trace); - #endif /* LTTNG_LIVE_METADATA_H */ diff --git a/src/plugins/ctf/lttng-live/viewer-connection.cpp b/src/plugins/ctf/lttng-live/viewer-connection.cpp index 5001545e..a4fa768c 100644 --- a/src/plugins/ctf/lttng-live/viewer-connection.cpp +++ b/src/plugins/ctf/lttng-live/viewer-connection.cpp @@ -1096,7 +1096,7 @@ lttng_live_get_one_metadata_packet(struct lttng_live_trace *trace, std::vector data; struct lttng_live_session *session = trace->session; struct lttng_live_msg_iter *lttng_live_msg_iter = session->lttng_live_msg_iter; - struct lttng_live_metadata *metadata = trace->metadata; + struct lttng_live_metadata *metadata = trace->metadata.get(); struct live_viewer_connection *viewer_connection = lttng_live_msg_iter->viewer_connection; const size_t cmd_buf_len = sizeof(cmd) + sizeof(rq); char cmd_buf[cmd_buf_len]; -- 2.34.1