X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Ffs-src%2Fquery.c;h=adc8f4d12fc9280f81d439c69bcb3f3134d2241d;hb=50f6fce8d00bc6b70a814a0be3b71570fb65d070;hp=35e4ec97eaf49c22f9fe3320e6b6311d8101eae4;hpb=ed47ebcd99fd2fb58770dc733d9318b57858de68;p=babeltrace.git diff --git a/src/plugins/ctf/fs-src/query.c b/src/plugins/ctf/fs-src/query.c index 35e4ec97..adc8f4d1 100644 --- a/src/plugins/ctf/fs-src/query.c +++ b/src/plugins/ctf/fs-src/query.c @@ -1,27 +1,9 @@ /* - * query.c - * - * Babeltrace CTF file system Reader Component queries + * SPDX-License-Identifier: MIT * * Copyright 2017 Jérémie Galarneau * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. + * Babeltrace CTF file system Reader Component queries */ #define BT_LOG_OUTPUT_LEVEL log_level @@ -123,6 +105,7 @@ bt_component_class_query_method_status metadata_info_query( } decoder_cfg.log_level = log_level; + decoder_cfg.self_comp_class = self_comp_class; decoder_cfg.keep_plain_text = true; decoder = ctf_metadata_decoder_create(&decoder_cfg); if (!decoder) { @@ -171,7 +154,11 @@ end: ctf_metadata_decoder_destroy(decoder); if (metadata_fp) { - fclose(metadata_fp); + ret = fclose(metadata_fp); + if (ret) { + BT_LOGE_ERRNO("Cannot close metatada file stream", + ": path=\"%s\"", path); + } } *user_result = result; @@ -278,28 +265,27 @@ end: } static -int populate_trace_info(const struct ctf_fs_trace *trace, bt_value *trace_info) +int populate_trace_info(const struct ctf_fs_trace *trace, bt_value *trace_info, + bt_logging_level log_level, + bt_self_component_class *self_comp_class) { int ret = 0; size_t group_idx; bt_value_map_insert_entry_status insert_status; bt_value_array_append_element_status append_status; bt_value *file_groups = NULL; - struct range trace_intersection = { - .begin_ns = 0, - .end_ns = INT64_MAX, - .set = false, - }; BT_ASSERT(trace->ds_file_groups); /* Add trace range info only if it contains streams. */ if (trace->ds_file_groups->len == 0) { ret = -1; + BT_COMP_CLASS_LOGE_APPEND_CAUSE(self_comp_class, + "Trace has no streams: trace-path=%s", trace->path->str); goto end; } insert_status = bt_value_map_insert_empty_array_entry(trace_info, - "streams", &file_groups); + "stream-infos", &file_groups); if (insert_status != BT_VALUE_MAP_INSERT_ENTRY_STATUS_OK) { ret = -1; goto end; @@ -324,22 +310,6 @@ int populate_trace_info(const struct ctf_fs_trace *trace, bt_value *trace_info) if (ret) { goto end; } - - if (group_range.set) { - trace_intersection.begin_ns = MAX(trace_intersection.begin_ns, - group_range.begin_ns); - trace_intersection.end_ns = MIN(trace_intersection.end_ns, - group_range.end_ns); - trace_intersection.set = true; - } - } - - if (trace_intersection.begin_ns < trace_intersection.end_ns) { - ret = add_range(trace_info, &trace_intersection, - "intersection-range-ns"); - if (ret) { - goto end; - } } end: @@ -347,7 +317,7 @@ end: } BT_HIDDEN -bt_component_class_query_method_status trace_info_query( +bt_component_class_query_method_status trace_infos_query( bt_self_component_class_source *self_comp_class_src, const bt_value *params, bt_logging_level log_level, const bt_value **user_result) @@ -360,6 +330,7 @@ bt_component_class_query_method_status trace_info_query( self_comp_class_src); bt_value *result = NULL; const bt_value *inputs_value = NULL; + const bt_value *trace_name_value; int ret = 0; bt_value *trace_info = NULL; bt_value_array_append_element_status append_status; @@ -378,14 +349,14 @@ bt_component_class_query_method_status trace_info_query( goto error; } - if (!read_src_fs_parameters(params, &inputs_value, ctf_fs, NULL, - self_comp_class)) { + if (!read_src_fs_parameters(params, &inputs_value, &trace_name_value, + ctf_fs, NULL, self_comp_class)) { status = BT_COMPONENT_CLASS_QUERY_METHOD_STATUS_ERROR; goto error; } - if (ctf_fs_component_create_ctf_fs_trace(ctf_fs, inputs_value, NULL, - self_comp_class)) { + if (ctf_fs_component_create_ctf_fs_trace(ctf_fs, inputs_value, + trace_name_value, NULL, self_comp_class)) { goto error; } @@ -403,7 +374,8 @@ bt_component_class_query_method_status trace_info_query( goto error; } - ret = populate_trace_info(ctf_fs->trace, trace_info); + ret = populate_trace_info(ctf_fs->trace, trace_info, log_level, + self_comp_class); if (ret) { goto error; } @@ -467,13 +439,15 @@ bt_component_class_query_method_status support_info_query( goto end; } - metadata_file = g_fopen(metadata_path, "r"); + metadata_file = g_fopen(metadata_path, "rb"); if (metadata_file) { struct ctf_metadata_decoder_config metadata_decoder_config = { 0 }; enum ctf_metadata_decoder_status decoder_status; bt_uuid_t uuid; metadata_decoder_config.log_level = log_level; + metadata_decoder_config.self_comp_class = + bt_self_component_class_source_as_self_component_class(comp_class); metadata_decoder = ctf_metadata_decoder_create( &metadata_decoder_config);