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
- ds_file->file = ctf_fs_file_create(parentLogger);
+ ds_file->file = ctf_fs_file_create(parentLogger).release();
if (!ds_file->file) {
goto error;
}
if (!ds_file->file) {
goto error;
}
-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;
file->path = g_string_new(NULL);
if (!file->path) {
goto error;
- ctf_fs_file_destroy(file);
- file = NULL;
#ifndef CTF_FS_FILE_H
#define CTF_FS_FILE_H
#ifndef CTF_FS_FILE_H
#define CTF_FS_FILE_H
#include <babeltrace2/babeltrace.h>
#include "cpp-common/bt2c/logging.hpp"
#include <babeltrace2/babeltrace.h>
#include "cpp-common/bt2c/logging.hpp"
+struct ctf_fs_file_deleter
+{
+ void operator()(struct ctf_fs_file *file) noexcept;
+};
+
+ 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"}
{
explicit ctf_fs_file(const bt2c::Logger& parentLogger) :
logger {parentLogger, "PLUGIN/SRC.CTF.FS/FILE"}
{
void ctf_fs_file_destroy(struct ctf_fs_file *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);
int ctf_fs_file_open(struct ctf_fs_file *file, const char *mode);
- 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,
if (!file) {
BT_CPPLOGE_APPEND_CAUSE_SPEC(
ctf_fs_trace->logger,
static struct ctf_fs_file *get_file(const char *trace_path, const bt2c::Logger& logger)
{
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();