src.ctf.fs: make ctf_fs_file_create return a unique_ptr
authorSimon Marchi <simon.marchi@efficios.com>
Fri, 5 Apr 2024 19:45:51 +0000 (15:45 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 17 Apr 2024 17:57:53 +0000 (13:57 -0400)
Introduce ctf_fs_file::UP, make ctf_fs_file_create return that, adjust
impacted callers.

Change-Id: Ice241fd596af3d54e9c7bc7f562ca010bb5833aa
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/8260
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12298

src/plugins/ctf/fs-src/data-stream-file.cpp
src/plugins/ctf/fs-src/file.cpp
src/plugins/ctf/fs-src/file.hpp
src/plugins/ctf/fs-src/fs.cpp
src/plugins/ctf/fs-src/metadata.cpp

index bde54c7e1dc3111da6cbff458f23d80927105686..cea4a620cab624856e347998d716f5ae39ba782d 100644 (file)
@@ -823,7 +823,7 @@ struct ctf_fs_ds_file *ctf_fs_ds_file_create(struct ctf_fs_trace *ctf_fs_trace,
         goto error;
     }
 
-    ds_file->file = ctf_fs_file_create(parentLogger);
+    ds_file->file = ctf_fs_file_create(parentLogger).release();
     if (!ds_file->file) {
         goto error;
     }
index 938c048dee513ce7c56546a8bdfee9465e547b18..d125789e6e6c9ae68424e50a76bb06e034e444eb 100644 (file)
@@ -35,9 +35,15 @@ void ctf_fs_file_destroy(struct ctf_fs_file *file)
     delete file;
 }
 
-struct ctf_fs_file *ctf_fs_file_create(const bt2c::Logger& parentLogger)
+void ctf_fs_file_deleter::operator()(ctf_fs_file * const file) noexcept
 {
-    ctf_fs_file *file = new ctf_fs_file {parentLogger};
+    ctf_fs_file_destroy(file);
+}
+
+ctf_fs_file::UP ctf_fs_file_create(const bt2c::Logger& parentLogger)
+{
+    ctf_fs_file::UP file {new ctf_fs_file {parentLogger}};
+
     file->path = g_string_new(NULL);
     if (!file->path) {
         goto error;
@@ -46,8 +52,7 @@ struct ctf_fs_file *ctf_fs_file_create(const bt2c::Logger& parentLogger)
     goto end;
 
 error:
-    ctf_fs_file_destroy(file);
-    file = NULL;
+    file.reset();
 
 end:
     return file;
index ccde384b1756ca0e27abdeed1c9f29997ec9ed70..607c1a944e28f4a207887968b9b61a914bdad2db 100644 (file)
@@ -7,12 +7,21 @@
 #ifndef CTF_FS_FILE_H
 #define CTF_FS_FILE_H
 
+#include <memory>
+
 #include <babeltrace2/babeltrace.h>
 
 #include "cpp-common/bt2c/logging.hpp"
 
+struct ctf_fs_file_deleter
+{
+    void operator()(struct ctf_fs_file *file) noexcept;
+};
+
 struct ctf_fs_file
 {
+    using UP = std::unique_ptr<ctf_fs_file, ctf_fs_file_deleter>;
+
     explicit ctf_fs_file(const bt2c::Logger& parentLogger) :
         logger {parentLogger, "PLUGIN/SRC.CTF.FS/FILE"}
     {
@@ -31,7 +40,7 @@ struct ctf_fs_file
 
 void ctf_fs_file_destroy(struct ctf_fs_file *file);
 
-struct ctf_fs_file *ctf_fs_file_create(const bt2c::Logger& parentLogger);
+ctf_fs_file::UP ctf_fs_file_create(const bt2c::Logger& parentLogger);
 
 int ctf_fs_file_open(struct ctf_fs_file *file, const char *mode);
 
index ac4c720c816ef37f7bed3ee552f6b746572df7b8..8bdc1e0c323310e7b73f667cbcdbbade39494d56 100644 (file)
@@ -684,7 +684,7 @@ static int create_ds_file_groups(struct ctf_fs_trace *ctf_fs_trace)
         }
 
         /* Create the file. */
-        file = ctf_fs_file_create(ctf_fs_trace->logger);
+        file = ctf_fs_file_create(ctf_fs_trace->logger).release();
         if (!file) {
             BT_CPPLOGE_APPEND_CAUSE_SPEC(
                 ctf_fs_trace->logger,
index 86826179c9b08ecb881fae5b4d143c40dc79041c..019970176c283c62ff3d08a6fed6bb586c487de2 100644 (file)
@@ -37,7 +37,7 @@ end:
 
 static struct ctf_fs_file *get_file(const char *trace_path, const bt2c::Logger& logger)
 {
-    struct ctf_fs_file *file = ctf_fs_file_create(logger);
+    struct ctf_fs_file *file = ctf_fs_file_create(logger).release();
 
     if (!file) {
         goto error;
This page took 0.027262 seconds and 4 git commands to generate.