lib: remove internal stream destroy listener API
[babeltrace.git] / plugins / ctf / fs-src / fs.c
index 523f6c34e8e73d01331973ff918c366378f429d7..04421d3147a8f3b5f70ea5e9b555181dab9a1c8c 100644 (file)
@@ -59,6 +59,7 @@ int notif_iter_data_set_current_ds_file(struct ctf_fs_notif_iter_data *notif_ite
        ctf_fs_ds_file_destroy(notif_iter_data->ds_file);
        notif_iter_data->ds_file = ctf_fs_ds_file_create(
                notif_iter_data->ds_file_group->ctf_fs_trace,
+               notif_iter_data->graph,
                notif_iter_data->notif_iter,
                notif_iter_data->ds_file_group->stream,
                ds_file_info->path->str);
@@ -215,6 +216,8 @@ enum bt_notification_iterator_status ctf_fs_iterator_init(
                goto error;
        }
 
+       notif_iter_data->graph = bt_component_borrow_graph(
+               bt_component_borrow_from_private(port_data->ctf_fs->priv_comp));
        notif_iter_data->notif_iter = bt_notif_iter_create(
                port_data->ds_file_group->ctf_fs_trace->metadata->trace,
                bt_common_get_page_size() * 8,
@@ -366,6 +369,7 @@ int create_one_port_for_trace(struct ctf_fs_component *ctf_fs,
                goto error;
        }
 
+       port_data->ctf_fs = ctf_fs;
        port_data->ds_file_group = ds_file_group;
        ret = bt_private_component_source_add_output_private_port(
                ctf_fs->priv_comp, port_name->str, port_data, NULL);
@@ -439,7 +443,6 @@ uint64_t get_packet_header_stream_instance_id(struct ctf_fs_trace *ctf_fs_trace,
        }
 
 end:
-       bt_put(stream_instance_id_field);
        return stream_instance_id;
 }
 
@@ -454,7 +457,6 @@ uint64_t get_packet_context_timestamp_begin_ns(
        uint64_t timestamp_begin_ns = -1ULL;
        int64_t timestamp_begin_ns_signed;
        struct bt_clock_class *timestamp_begin_clock_class = NULL;
-       struct bt_clock_value *clock_value = NULL;
 
        if (!packet_context_field) {
                goto end;
@@ -480,14 +482,8 @@ uint64_t get_packet_context_timestamp_begin_ns(
                goto end;
        }
 
-       clock_value = bt_clock_value_create(timestamp_begin_clock_class,
-               timestamp_begin_raw_value);
-       if (!clock_value) {
-               goto end;
-       }
-
-       ret = bt_clock_value_get_value_ns_from_epoch(clock_value,
-               &timestamp_begin_ns_signed);
+       ret = bt_clock_class_cycles_to_ns(timestamp_begin_clock_class,
+               timestamp_begin_raw_value, &timestamp_begin_ns_signed);
        if (ret) {
                goto end;
        }
@@ -495,7 +491,6 @@ uint64_t get_packet_context_timestamp_begin_ns(
        timestamp_begin_ns = (uint64_t) timestamp_begin_ns_signed;
 
 end:
-       bt_put(clock_value);
        return timestamp_begin_ns;
 }
 
@@ -651,7 +646,7 @@ end:
 
 static
 int add_ds_file_to_ds_file_group(struct ctf_fs_trace *ctf_fs_trace,
-               const char *path)
+               struct bt_graph *graph, const char *path)
 {
        struct bt_field *packet_header_field = NULL;
        struct bt_field *packet_context_field = NULL;
@@ -673,12 +668,13 @@ int add_ds_file_to_ds_file_group(struct ctf_fs_trace *ctf_fs_trace,
                goto error;
        }
 
-       ds_file = ctf_fs_ds_file_create(ctf_fs_trace, notif_iter, NULL, path);
+       ds_file = ctf_fs_ds_file_create(ctf_fs_trace, graph, notif_iter,
+               NULL, path);
        if (!ds_file) {
                goto error;
        }
 
-       ret = ctf_fs_ds_file_get_packet_header_context_fields(ds_file,
+       ret = ctf_fs_ds_file_borrow_packet_header_context_fields(ds_file,
                &packet_header_field, &packet_context_field);
        if (ret) {
                BT_LOGE("Cannot get stream file's first packet's header and context fields (`%s`).",
@@ -789,13 +785,12 @@ end:
        }
 
        ctf_fs_ds_index_destroy(index);
-       bt_put(packet_header_field);
-       bt_put(packet_context_field);
        return ret;
 }
 
 static
-int create_ds_file_groups(struct ctf_fs_trace *ctf_fs_trace)
+int create_ds_file_groups(struct ctf_fs_trace *ctf_fs_trace,
+               struct bt_graph *graph)
 {
        int ret = 0;
        const char *basename;
@@ -860,7 +855,7 @@ int create_ds_file_groups(struct ctf_fs_trace *ctf_fs_trace)
                        continue;
                }
 
-               ret = add_ds_file_to_ds_file_group(ctf_fs_trace,
+               ret = add_ds_file_to_ds_file_group(ctf_fs_trace, graph,
                        file->path->str);
                if (ret) {
                        BT_LOGE("Cannot add stream file `%s` to stream file group",
@@ -967,7 +962,8 @@ end:
 
 BT_HIDDEN
 struct ctf_fs_trace *ctf_fs_trace_create(const char *path, const char *name,
-               struct ctf_fs_metadata_config *metadata_config)
+               struct ctf_fs_metadata_config *metadata_config,
+               struct bt_graph *graph)
 {
        struct ctf_fs_trace *ctf_fs_trace;
        int ret;
@@ -1003,7 +999,7 @@ struct ctf_fs_trace *ctf_fs_trace_create(const char *path, const char *name,
                goto error;
        }
 
-       ret = create_ds_file_groups(ctf_fs_trace);
+       ret = create_ds_file_groups(ctf_fs_trace, graph);
        if (ret) {
                goto error;
        }
@@ -1249,9 +1245,13 @@ int create_ctf_fs_traces(struct ctf_fs_component *ctf_fs,
                        tn_node = g_list_next(tn_node)) {
                GString *trace_path = tp_node->data;
                GString *trace_name = tn_node->data;
+               struct bt_graph *graph = bt_component_borrow_graph(
+                       bt_component_borrow_from_private(ctf_fs->priv_comp));
 
+               BT_ASSERT(graph);
                ctf_fs_trace = ctf_fs_trace_create(trace_path->str,
-                               trace_name->str, &ctf_fs->metadata_config);
+                               trace_name->str, &ctf_fs->metadata_config,
+                               graph);
                if (!ctf_fs_trace) {
                        BT_LOGE("Cannot create trace for `%s`.",
                                trace_path->str);
This page took 0.037665 seconds and 4 git commands to generate.