src.ctf.fs: make ctf_fs_ds_group_medops_data_create return a unique_ptr
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 5 Dec 2023 04:06:35 +0000 (04:06 +0000)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 17 Apr 2024 17:57:53 +0000 (13:57 -0400)
Introduce ctf_fs_ds_group_medops_data_up, a unique_ptr type with a
deleter that calls ctf_fs_ds_group_medops_data_destroy.  Make
ctf_fs_ds_group_medops_data_create return (by parameter) a value of this
type.

Change ctf_fs_msg_iter_data::msg_iter_medops_data to be of this type too,
since the result of ctf_fs_ds_group_medops_data_create is put directly in
that field.

Change-Id: I971e2e6db622f5cfe492eaede239852886a24483
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8272
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12310
Tested-by: jenkins <jenkins@lttng.org>
src/plugins/ctf/fs-src/data-stream-file.cpp
src/plugins/ctf/fs-src/data-stream-file.hpp
src/plugins/ctf/fs-src/fs.cpp
src/plugins/ctf/fs-src/fs.hpp

index c456104c746a7389e04d98effe218433970fa928..73d4751bb150e01c6c2737e2698c0e4fceedbd3e 100644 (file)
@@ -389,18 +389,24 @@ end:
     return;
 }
 
+void ctf_fs_ds_group_medops_data_deleter::operator()(ctf_fs_ds_group_medops_data *data) noexcept
+{
+    ctf_fs_ds_group_medops_data_destroy(data);
+}
+
 enum ctf_msg_iter_medium_status ctf_fs_ds_group_medops_data_create(
     struct ctf_fs_ds_file_group *ds_file_group, bt_self_message_iterator *self_msg_iter,
-    const bt2c::Logger& parentLogger, struct ctf_fs_ds_group_medops_data **out)
+    const bt2c::Logger& parentLogger, ctf_fs_ds_group_medops_data_up& out)
 {
     BT_ASSERT(self_msg_iter);
     BT_ASSERT(ds_file_group);
     BT_ASSERT(ds_file_group->index);
     BT_ASSERT(!ds_file_group->index->entries.empty());
 
-    ctf_fs_ds_group_medops_data *data = new ctf_fs_ds_group_medops_data {parentLogger};
-    data->ds_file_group = ds_file_group;
-    data->self_msg_iter = self_msg_iter;
+    out.reset(new ctf_fs_ds_group_medops_data {parentLogger});
+
+    out->ds_file_group = ds_file_group;
+    out->self_msg_iter = self_msg_iter;
 
     /*
      * No need to prepare the first file.  ctf_msg_iter will call
@@ -408,7 +414,6 @@ enum ctf_msg_iter_medium_status ctf_fs_ds_group_medops_data_create(
      * done then.
      */
 
-    *out = data;
     return CTF_MSG_ITER_MEDIUM_STATUS_OK;
 }
 
index 71c31e23b03b622b3f37f7fb361e8be343a2cbc1..d5db8cfcc82189c24b848f6178e642fdb5dcea02 100644 (file)
@@ -181,9 +181,18 @@ extern struct ctf_msg_iter_medium_ops ctf_fs_ds_file_medops;
  */
 extern struct ctf_msg_iter_medium_ops ctf_fs_ds_group_medops;
 
-enum ctf_msg_iter_medium_status ctf_fs_ds_group_medops_data_create(
-    struct ctf_fs_ds_file_group *ds_file_group, bt_self_message_iterator *self_msg_iter,
-    const bt2c::Logger& logger, struct ctf_fs_ds_group_medops_data **out);
+struct ctf_fs_ds_group_medops_data_deleter
+{
+    void operator()(struct ctf_fs_ds_group_medops_data *data) noexcept;
+};
+
+using ctf_fs_ds_group_medops_data_up =
+    std::unique_ptr<ctf_fs_ds_group_medops_data, ctf_fs_ds_group_medops_data_deleter>;
+
+enum ctf_msg_iter_medium_status
+ctf_fs_ds_group_medops_data_create(struct ctf_fs_ds_file_group *ds_file_group,
+                                   bt_self_message_iterator *self_msg_iter,
+                                   const bt2c::Logger& logger, ctf_fs_ds_group_medops_data_up& out);
 
 void ctf_fs_ds_group_medops_data_reset(struct ctf_fs_ds_group_medops_data *data);
 
index 00985e6d8c45094c709fb6084207815aac698a2d..f2582a82ffab3a74e19c5309edd347fff49ef321 100644 (file)
@@ -45,10 +45,6 @@ static void ctf_fs_msg_iter_data_destroy(struct ctf_fs_msg_iter_data *msg_iter_d
         ctf_msg_iter_destroy(msg_iter_data->msg_iter);
     }
 
-    if (msg_iter_data->msg_iter_medops_data) {
-        ctf_fs_ds_group_medops_data_destroy(msg_iter_data->msg_iter_medops_data);
-    }
-
     delete msg_iter_data;
 }
 
@@ -173,7 +169,7 @@ ctf_fs_iterator_seek_beginning(bt_self_message_iterator *it)
         BT_ASSERT(msg_iter_data);
 
         ctf_msg_iter_reset(msg_iter_data->msg_iter);
-        ctf_fs_ds_group_medops_data_reset(msg_iter_data->msg_iter_medops_data);
+        ctf_fs_ds_group_medops_data_reset(msg_iter_data->msg_iter_medops_data.get());
 
         return BT_MESSAGE_ITERATOR_CLASS_SEEK_BEGINNING_METHOD_STATUS_OK;
     } catch (const std::bad_alloc&) {
@@ -225,7 +221,7 @@ ctf_fs_iterator_init(bt_self_message_iterator *self_msg_iter,
 
         medium_status = ctf_fs_ds_group_medops_data_create(msg_iter_data->ds_file_group,
                                                            self_msg_iter, msg_iter_data->logger,
-                                                           &msg_iter_data->msg_iter_medops_data);
+                                                           msg_iter_data->msg_iter_medops_data);
         BT_ASSERT(medium_status == CTF_MSG_ITER_MEDIUM_STATUS_OK ||
                   medium_status == CTF_MSG_ITER_MEDIUM_STATUS_ERROR ||
                   medium_status == CTF_MSG_ITER_MEDIUM_STATUS_MEMORY_ERROR);
@@ -239,7 +235,7 @@ ctf_fs_iterator_init(bt_self_message_iterator *self_msg_iter,
         msg_iter_data->msg_iter = ctf_msg_iter_create(
             msg_iter_data->ds_file_group->ctf_fs_trace->metadata->tc,
             bt_common_get_page_size(static_cast<int>(msg_iter_data->logger.level())) * 8,
-            ctf_fs_ds_group_medops, msg_iter_data->msg_iter_medops_data, self_msg_iter,
+            ctf_fs_ds_group_medops, msg_iter_data->msg_iter_medops_data.get(), self_msg_iter,
             msg_iter_data->logger);
         if (!msg_iter_data->msg_iter) {
             BT_CPPLOGE_APPEND_CAUSE_SPEC(msg_iter_data->logger,
index 52e6761b8ab7676d3abf9554b4b3f4b9c3b23041..530f0fb386cac48f9dc357e5b8ff22e4ea83e071 100644 (file)
@@ -132,7 +132,7 @@ struct ctf_fs_msg_iter_data
         BT_MESSAGE_ITERATOR_CLASS_NEXT_METHOD_STATUS_OK;
     const struct bt_error *next_saved_error = nullptr;
 
-    struct ctf_fs_ds_group_medops_data *msg_iter_medops_data = nullptr;
+    ctf_fs_ds_group_medops_data_up msg_iter_medops_data;
 };
 
 bt_component_class_initialize_method_status
This page took 0.028226 seconds and 4 git commands to generate.