src.ctf.fs: make get_stream_instance_unique_name return `const std::string &`
[babeltrace.git] / src / plugins / ctf / fs-src / fs.cpp
index bb5d52da046248abd97d262897c75ba47f9d0613..ed98c9619178454637e020ffc743b764dd7ade78 100644 (file)
@@ -255,25 +255,6 @@ end:
     }
 }
 
-static void ctf_fs_trace_destroy(struct ctf_fs_trace *ctf_fs_trace)
-{
-    if (!ctf_fs_trace) {
-        return;
-    }
-
-    if (ctf_fs_trace->metadata) {
-        ctf_fs_metadata_fini(ctf_fs_trace->metadata);
-        delete ctf_fs_trace->metadata;
-    }
-
-    delete ctf_fs_trace;
-}
-
-void ctf_fs_trace_deleter::operator()(ctf_fs_trace * const trace) noexcept
-{
-    ctf_fs_trace_destroy(trace);
-}
-
 ctf_fs_component::UP ctf_fs_component_create(const bt2c::Logger& parentLogger)
 {
     return bt2s::make_unique<ctf_fs_component>(parentLogger);
@@ -746,8 +727,7 @@ static ctf_fs_trace::UP ctf_fs_trace_create(const char *path, const char *name,
     ctf_fs_trace::UP ctf_fs_trace {new struct ctf_fs_trace(parentLogger)};
 
     ctf_fs_trace->path = path;
-    ctf_fs_trace->metadata = new ctf_fs_metadata;
-    ctf_fs_metadata_init(ctf_fs_trace->metadata);
+    ctf_fs_trace->metadata = bt2s::make_unique<ctf_fs_metadata>();
 
     ret = ctf_fs_metadata_set_trace_class(selfComp, ctf_fs_trace.get(), clkClsCfg);
     if (ret) {
@@ -755,7 +735,7 @@ static ctf_fs_trace::UP ctf_fs_trace_create(const char *path, const char *name,
     }
 
     if (ctf_fs_trace->metadata->trace_class) {
-        bt_trace *trace = bt_trace_create(ctf_fs_trace->metadata->trace_class);
+        bt_trace *trace = bt_trace_create(ctf_fs_trace->metadata->trace_class->libObjPtr());
         if (!trace) {
             goto error;
         }
@@ -822,9 +802,8 @@ static int ctf_fs_component_create_ctf_fs_trace_one_path(struct ctf_fs_component
 {
     ctf_fs_trace::UP ctf_fs_trace;
     int ret;
-    GString *norm_path;
 
-    norm_path = bt_common_normalize_path(path_param, NULL);
+    bt2c::GStringUP norm_path {bt_common_normalize_path(path_param, NULL)};
     if (!norm_path) {
         BT_CPPLOGE_APPEND_CAUSE_SPEC(ctf_fs->logger, "Failed to normalize path: `{}`.", path_param);
         goto error;
@@ -866,10 +845,6 @@ error:
     ret = -1;
 
 end:
-    if (norm_path) {
-        g_string_free(norm_path, TRUE);
-    }
-
     return ret;
 }
 
@@ -1732,27 +1707,15 @@ end:
     return ret;
 }
 
-static GString *get_stream_instance_unique_name(struct ctf_fs_ds_file_group *ds_file_group)
+static const std::string&
+get_stream_instance_unique_name(struct ctf_fs_ds_file_group *ds_file_group)
 {
-    GString *name;
-    struct ctf_fs_ds_file_info *ds_file_info;
-
-    name = g_string_new(NULL);
-    if (!name) {
-        goto end;
-    }
-
     /*
-     * If there's more than one stream file in the stream file
-     * group, the first (earliest) stream file's path is used as
-     * the stream's unique name.
+     * The first (earliest) stream file's path is used as the stream's unique
+     * name.
      */
     BT_ASSERT(!ds_file_group->ds_file_infos.empty());
-    ds_file_info = ds_file_group->ds_file_infos[0].get();
-    g_string_assign(name, ds_file_info->path.c_str());
-
-end:
-    return name;
+    return ds_file_group->ds_file_infos[0]->path;
 }
 
 /* Create the IR stream objects for ctf_fs_trace. */
@@ -1760,14 +1723,9 @@ end:
 static int create_streams_for_trace(struct ctf_fs_trace *ctf_fs_trace)
 {
     int ret;
-    GString *name = NULL;
 
     for (const auto& ds_file_group : ctf_fs_trace->ds_file_groups) {
-        name = get_stream_instance_unique_name(ds_file_group.get());
-
-        if (!name) {
-            goto error;
-        }
+        const std::string& name = get_stream_instance_unique_name(ds_file_group.get());
 
         BT_ASSERT(ds_file_group->sc->ir_sc);
         BT_ASSERT(ctf_fs_trace->trace);
@@ -1791,23 +1749,20 @@ static int create_streams_for_trace(struct ctf_fs_trace *ctf_fs_trace)
             BT_CPPLOGE_APPEND_CAUSE_SPEC(ctf_fs_trace->logger,
                                          "Cannot create stream for DS file group: "
                                          "addr={}, stream-name=\"{}\"",
-                                         fmt::ptr(ds_file_group), name->str);
+                                         fmt::ptr(ds_file_group), name);
             goto error;
         }
 
         ds_file_group->stream = bt2::Stream::Shared::createWithoutRef(stream);
 
-        ret = bt_stream_set_name(ds_file_group->stream->libObjPtr(), name->str);
+        ret = bt_stream_set_name(ds_file_group->stream->libObjPtr(), name.c_str());
         if (ret) {
             BT_CPPLOGE_APPEND_CAUSE_SPEC(ctf_fs_trace->logger,
                                          "Cannot set stream's name: "
                                          "addr={}, stream-name=\"{}\"",
-                                         fmt::ptr(ds_file_group->stream->libObjPtr()), name->str);
+                                         fmt::ptr(ds_file_group->stream->libObjPtr()), name);
             goto error;
         }
-
-        g_string_free(name, TRUE);
-        name = NULL;
     }
 
     ret = 0;
@@ -1817,10 +1772,6 @@ error:
     ret = -1;
 
 end:
-
-    if (name) {
-        g_string_free(name, TRUE);
-    }
     return ret;
 }
 
This page took 0.025692 seconds and 4 git commands to generate.