src.ctf.lttng-live: add bt_common_lttng_live_url_parts_deleter
authorSimon Marchi <simon.marchi@efficios.com>
Thu, 23 Jun 2022 16:32:45 +0000 (12:32 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 23 Aug 2022 16:06:16 +0000 (12:06 -0400)
bt_common_lttng_live_url_parts can't be made a C++ object that
automatically manages its memory yet, since it's used in
babeltrace2-cfg-cli-args.c (C code).  Add an RAII type in lttng-live to
automatically call bt_common_destroy_lttng_live_url_parts in two places.

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

index 4c7a8855ae53a42a55d0c113752b8d60e005a911..10cd2428572dd87851dbff54f9ad9f6d5a77a4fe 100644 (file)
@@ -1808,6 +1808,7 @@ lttng_live_query_support_info(const bt_value *params, const bt_value **result,
     const bt_value *input_value;
     double weight = 0;
     struct bt_common_lttng_live_url_parts parts = {0};
+    bt_common_lttng_live_url_parts_deleter partsDeleter {parts};
 
     /* Used by the logging macros */
     __attribute__((unused)) bt_self_component *self_comp = NULL;
@@ -1866,7 +1867,6 @@ error:
     BT_ASSERT(!*result);
 
 end:
-    bt_common_destroy_lttng_live_url_parts(&parts);
     return status;
 }
 
index f198c77b9a311460050ad0fa5e15bb054df64425..e550813e71c313fb205ebc57209cd419d96b6662 100644 (file)
@@ -28,6 +28,26 @@ struct lttng_live_component;
 struct lttng_live_session;
 struct lttng_live_msg_iter;
 
+/*
+ * bt_common_lttng_live_url_parts is defined in common code, and is also used
+ * by C code, so it can't be C++-ified yet.  Use this separate deleter object
+ * in the mean time.
+ */
+struct bt_common_lttng_live_url_parts_deleter
+{
+    bt_common_lttng_live_url_parts_deleter(bt_common_lttng_live_url_parts& obj) : _mObj {obj}
+    {
+    }
+
+    ~bt_common_lttng_live_url_parts_deleter()
+    {
+        bt_common_destroy_lttng_live_url_parts(&_mObj);
+    }
+
+private:
+    bt_common_lttng_live_url_parts& _mObj;
+};
+
 enum lttng_live_stream_state
 {
     /* This stream won't have data until some known time in the future. */
index fd149118a42411630325ee9c6bc61c4ceab4b910..787a904561f06a9896ac7e6c80b8df2506e0ca19 100644 (file)
@@ -326,6 +326,7 @@ static int parse_url(struct live_viewer_connection *viewer_connection)
     char error_buf[256] = {0};
     const bt2_common::LogCfg& logCfg = viewer_connection->logCfg;
     struct bt_common_lttng_live_url_parts lttng_live_url_parts = {0};
+    bt_common_lttng_live_url_parts_deleter partsDeleter {lttng_live_url_parts};
     int ret = -1;
 
     if (viewer_connection->url.empty()) {
@@ -361,7 +362,6 @@ static int parse_url(struct live_viewer_connection *viewer_connection)
     ret = 0;
 
 end:
-    bt_common_destroy_lttng_live_url_parts(&lttng_live_url_parts);
     return ret;
 }
 
This page took 0.027787 seconds and 5 git commands to generate.