#include "query.h"
#include <stdbool.h>
-#include <babeltrace/assert-internal.h>
+#include <babeltrace2/assert-internal.h>
#include "metadata.h"
#include "../common/metadata/decoder.h"
-#include <babeltrace/common-internal.h>
-#include <babeltrace/babeltrace-internal.h>
-#include <babeltrace/babeltrace.h>
+#include <babeltrace2/common-internal.h>
+#include <babeltrace2/babeltrace-internal.h>
+#include <babeltrace2/babeltrace.h>
#include "fs.h"
#define BT_LOG_TAG "PLUGIN-CTF-FS-QUERY-SRC"
goto end;
}
- status = bt_value_map_insert_integer_entry(range_map, "begin",
+ status = bt_value_map_insert_signed_integer_entry(range_map, "begin",
range->begin_ns);
if (status != BT_VALUE_STATUS_OK) {
ret = -1;
goto end;
}
- status = bt_value_map_insert_integer_entry(range_map, "end",
+ status = bt_value_map_insert_signed_integer_entry(range_map, "end",
range->end_ns);
if (status != BT_VALUE_STATUS_OK) {
ret = -1;
bt_value_status status;
if (ds_file_group->stream_id != UINT64_C(-1)) {
- status = bt_value_map_insert_integer_entry(info, "id",
- (int64_t) ds_file_group->stream_id);
+ status = bt_value_map_insert_unsigned_integer_entry(info, "id",
+ ds_file_group->stream_id);
if (status != BT_VALUE_STATUS_OK) {
ret = -1;
goto end;
}
}
- status = bt_value_map_insert_integer_entry(info, "class-id",
- (int64_t) ds_file_group->sc->id);
+ status = bt_value_map_insert_unsigned_integer_entry(info, "class-id",
+ ds_file_group->sc->id);
if (status != BT_VALUE_STATUS_OK) {
ret = -1;
goto end;
size_t file_idx;
bt_value_status status;
bt_value *file_paths;
- struct ctf_fs_ds_file_info *first_file_info, *last_file_info;
struct ctf_fs_ds_index_entry *first_ds_index_entry, *last_ds_index_entry;
+ gchar *port_name = NULL;
file_paths = bt_value_array_create();
if (!file_paths) {
g_ptr_array_index(group->ds_file_infos,
file_idx);
- if (!info->index || info->index->entries->len == 0) {
- BT_LOGW("Cannot determine range of unindexed stream file \'%s\'",
- info->path->str);
- ret = -1;
- goto end;
- }
-
status = bt_value_array_append_string_element(file_paths,
info->path->str);
if (status != BT_VALUE_STATUS_OK) {
}
/*
- * Since `struct ctf_fs_ds_file_info` elements are sorted by value of
- * `begin_ns` within the `ds_file_groups` array and `struct
- * ctf_fs_ds_index_entry` elements are sorted by time within their
- * respective `struct ctf_fs_ds_file_info`, we can compute the stream
- * range from timestamp_begin of the first index entry of the first
- * file to the timestamp_end of the last index entry of the last file.
+ * Since each `struct ctf_fs_ds_file_group` has a sorted array of
+ * `struct ctf_fs_ds_index_entry`, we can compute the stream range from
+ * the timestamp_begin of the first index entry and the timestamp_end
+ * of the last index entry.
*/
- BT_ASSERT(group->ds_file_infos->len > 0);
-
- first_file_info = g_ptr_array_index(group->ds_file_infos, 0);
- last_file_info = g_ptr_array_index(group->ds_file_infos,
- group->ds_file_infos->len - 1);
-
- BT_ASSERT(first_file_info->index->entries->len > 0);
+ BT_ASSERT(group->index);
+ BT_ASSERT(group->index->entries);
+ BT_ASSERT(group->index->entries->len > 0);
- first_ds_index_entry = (struct ctf_fs_ds_index_entry *) &g_array_index(
- first_file_info->index->entries, struct ctf_fs_ds_index_entry, 0);
+ /* First entry. */
+ first_ds_index_entry = (struct ctf_fs_ds_index_entry *) g_ptr_array_index(
+ group->index->entries, 0);
- BT_ASSERT(last_file_info->index->entries->len > 0);
-
- last_ds_index_entry = (struct ctf_fs_ds_index_entry *) &g_array_index(
- last_file_info->index->entries, struct ctf_fs_ds_index_entry,
- last_file_info->index->entries->len - 1);
+ /* Last entry. */
+ last_ds_index_entry = (struct ctf_fs_ds_index_entry *) g_ptr_array_index(
+ group->index->entries, group->index->entries->len - 1);
stream_range->begin_ns = first_ds_index_entry->timestamp_begin_ns;
stream_range->end_ns = last_ds_index_entry->timestamp_end_ns;
if (ret) {
goto end;
}
+
+ port_name = ctf_fs_make_port_name(group);
+ if (!port_name) {
+ ret = -1;
+ goto end;
+ }
+
+ status = bt_value_map_insert_string_entry(group_info, "port-name",
+ port_name);
+ if (status != BT_VALUE_STATUS_OK) {
+ ret = -1;
+ goto end;
+ }
+
end:
bt_value_put_ref(file_paths);
return ret;
goto end;
}
+ status = bt_value_array_append_element(file_groups, group_info);
+ bt_value_put_ref(group_info);
+ if (status != BT_VALUE_STATUS_OK) {
+ goto end;
+ }
+
if (group_range.set) {
trace_range.begin_ns = min(trace_range.begin_ns,
group_range.begin_ns);
trace_intersection.end_ns = min(trace_intersection.end_ns,
group_range.end_ns);
trace_intersection.set = true;
- status = bt_value_array_append_element(
- file_groups,
- group_info);
- bt_value_put_ref(group_info);
- if (status != BT_VALUE_STATUS_OK) {
- goto end;
- }
}
}
goto error;
}
- paths_value = bt_value_map_borrow_entry_value_const(params, "paths");
- if (!validate_paths_parameter(paths_value)) {
+ ctf_fs = ctf_fs_component_create();
+ if (!ctf_fs) {
goto error;
}
- ctf_fs = ctf_fs_component_create();
- if (!ctf_fs) {
+ if (!read_src_fs_parameters(params, &paths_value, ctf_fs)) {
+ status = BT_QUERY_STATUS_INVALID_PARAMS;
goto error;
}