From 873c329a8250f437588cc464c272d612807ad63b Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Fri, 5 Apr 2024 14:42:41 -0400 Subject: [PATCH] src.ctf.fs: move `ctf_fs_ds_*` structures and functions to data-stream-file.hpp Change-Id: I15392536482968db492fe806ee5fa5e0ecff643e Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/12282 Reviewed-by: Philippe Proulx --- src/plugins/ctf/fs-src/data-stream-file.cpp | 74 ++++++++++++++++++ src/plugins/ctf/fs-src/data-stream-file.hpp | 85 +++++++++++++++++++++ src/plugins/ctf/fs-src/fs.cpp | 74 ------------------ src/plugins/ctf/fs-src/fs.hpp | 74 ------------------ src/plugins/ctf/fs-src/query.cpp | 1 + 5 files changed, 160 insertions(+), 148 deletions(-) diff --git a/src/plugins/ctf/fs-src/data-stream-file.cpp b/src/plugins/ctf/fs-src/data-stream-file.cpp index 1b28fde5..d2d31471 100644 --- a/src/plugins/ctf/fs-src/data-stream-file.cpp +++ b/src/plugins/ctf/fs-src/data-stream-file.cpp @@ -925,3 +925,77 @@ void ctf_fs_ds_index_destroy(struct ctf_fs_ds_index *index) delete index; } + +void ctf_fs_ds_file_info_destroy(struct ctf_fs_ds_file_info *ds_file_info) +{ + if (!ds_file_info) { + return; + } + + if (ds_file_info->path) { + g_string_free(ds_file_info->path, TRUE); + } + + delete ds_file_info; +} + +struct ctf_fs_ds_file_info *ctf_fs_ds_file_info_create(const char *path, int64_t begin_ns) +{ + ctf_fs_ds_file_info *ds_file_info = new ctf_fs_ds_file_info; + ds_file_info->path = g_string_new(path); + if (!ds_file_info->path) { + ctf_fs_ds_file_info_destroy(ds_file_info); + ds_file_info = NULL; + goto end; + } + + ds_file_info->begin_ns = begin_ns; + +end: + return ds_file_info; +} + +void ctf_fs_ds_file_group_destroy(struct ctf_fs_ds_file_group *ds_file_group) +{ + if (!ds_file_group) { + return; + } + + if (ds_file_group->ds_file_infos) { + g_ptr_array_free(ds_file_group->ds_file_infos, TRUE); + } + + ctf_fs_ds_index_destroy(ds_file_group->index); + + bt_stream_put_ref(ds_file_group->stream); + delete ds_file_group; +} + +struct ctf_fs_ds_file_group *ctf_fs_ds_file_group_create(struct ctf_fs_trace *ctf_fs_trace, + struct ctf_stream_class *sc, + uint64_t stream_instance_id, + struct ctf_fs_ds_index *index) +{ + ctf_fs_ds_file_group *ds_file_group = new ctf_fs_ds_file_group; + ds_file_group->ds_file_infos = + g_ptr_array_new_with_free_func((GDestroyNotify) ctf_fs_ds_file_info_destroy); + if (!ds_file_group->ds_file_infos) { + goto error; + } + + ds_file_group->index = index; + + ds_file_group->stream_id = stream_instance_id; + BT_ASSERT(sc); + ds_file_group->sc = sc; + ds_file_group->ctf_fs_trace = ctf_fs_trace; + goto end; + +error: + ctf_fs_ds_file_group_destroy(ds_file_group); + ctf_fs_ds_index_destroy(index); + ds_file_group = NULL; + +end: + return ds_file_group; +} diff --git a/src/plugins/ctf/fs-src/data-stream-file.hpp b/src/plugins/ctf/fs-src/data-stream-file.hpp index ecf450f4..0b6a95af 100644 --- a/src/plugins/ctf/fs-src/data-stream-file.hpp +++ b/src/plugins/ctf/fs-src/data-stream-file.hpp @@ -12,6 +12,7 @@ #include +#include "cpp-common/bt2c/data-len.hpp" #include "cpp-common/bt2c/logging.hpp" #include "../common/src/msg-iter/msg-iter.hpp" @@ -64,6 +65,79 @@ struct ctf_fs_ds_file off_t request_offset_in_mapping = 0; }; +struct ctf_fs_ds_index_entry +{ + explicit ctf_fs_ds_index_entry(const bt2c::DataLen offsetParam, + const bt2c::DataLen packetSizeParam) noexcept : + offset(offsetParam), + packetSize(packetSizeParam) + { + } + + /* Weak, belongs to ctf_fs_ds_file_info. */ + const char *path = nullptr; + + /* Position of the packet from the beginning of the file. */ + bt2c::DataLen offset; + + /* Size of the packet. */ + bt2c::DataLen packetSize; + + /* + * Extracted from the packet context, relative to the respective fields' + * mapped clock classes (in cycles). + */ + uint64_t timestamp_begin = 0, timestamp_end = 0; + + /* + * Converted from the packet context, relative to the trace's EPOCH + * (in ns since EPOCH). + */ + int64_t timestamp_begin_ns = 0, timestamp_end_ns = 0; + + /* + * Packet sequence number, or UINT64_MAX if not present in the index. + */ + uint64_t packet_seq_num = 0; +}; + +struct ctf_fs_ds_index +{ + /* Array of pointer to struct ctf_fs_ds_index_entry. */ + GPtrArray *entries = nullptr; +}; + +struct ctf_fs_ds_file_group +{ + /* + * Array of struct ctf_fs_ds_file_info, owned by this. + * + * This is an _ordered_ array of data stream file infos which + * belong to this group (a single stream instance). + * + * You can call ctf_fs_ds_file_create() with one of those paths + * and the trace IR stream below. + */ + GPtrArray *ds_file_infos = nullptr; + + /* Owned by this */ + struct ctf_stream_class *sc = nullptr; + + /* Owned by this */ + bt_stream *stream = nullptr; + + /* Stream (instance) ID; -1ULL means none */ + uint64_t stream_id = 0; + + /* Weak, belongs to component */ + struct ctf_fs_trace *ctf_fs_trace = nullptr; + + /* + * Owned by this. + */ + struct ctf_fs_ds_index *index = nullptr; +}; + struct ctf_fs_ds_file *ctf_fs_ds_file_create(struct ctf_fs_trace *ctf_fs_trace, bt_stream *stream, const char *path, const bt2c::Logger& logger); @@ -77,6 +151,17 @@ struct ctf_fs_ds_index *ctf_fs_ds_index_create(const bt2c::Logger& logger); void ctf_fs_ds_index_destroy(struct ctf_fs_ds_index *index); +void ctf_fs_ds_file_info_destroy(struct ctf_fs_ds_file_info *ds_file_info); + +struct ctf_fs_ds_file_info *ctf_fs_ds_file_info_create(const char *path, int64_t begin_ns); + +struct ctf_fs_ds_file_group *ctf_fs_ds_file_group_create(struct ctf_fs_trace *ctf_fs_trace, + struct ctf_stream_class *sc, + uint64_t stream_instance_id, + struct ctf_fs_ds_index *index); + +void ctf_fs_ds_file_group_destroy(struct ctf_fs_ds_file_group *ds_file_group); + /* * Medium operations to iterate on a single ctf_fs_ds_file. * diff --git a/src/plugins/ctf/fs-src/fs.cpp b/src/plugins/ctf/fs-src/fs.cpp index b2e0f8ff..dba30e83 100644 --- a/src/plugins/ctf/fs-src/fs.cpp +++ b/src/plugins/ctf/fs-src/fs.cpp @@ -461,80 +461,6 @@ end: return ret; } -static void ctf_fs_ds_file_info_destroy(struct ctf_fs_ds_file_info *ds_file_info) -{ - if (!ds_file_info) { - return; - } - - if (ds_file_info->path) { - g_string_free(ds_file_info->path, TRUE); - } - - delete ds_file_info; -} - -static struct ctf_fs_ds_file_info *ctf_fs_ds_file_info_create(const char *path, int64_t begin_ns) -{ - ctf_fs_ds_file_info *ds_file_info = new ctf_fs_ds_file_info; - ds_file_info->path = g_string_new(path); - if (!ds_file_info->path) { - ctf_fs_ds_file_info_destroy(ds_file_info); - ds_file_info = NULL; - goto end; - } - - ds_file_info->begin_ns = begin_ns; - -end: - return ds_file_info; -} - -static void ctf_fs_ds_file_group_destroy(struct ctf_fs_ds_file_group *ds_file_group) -{ - if (!ds_file_group) { - return; - } - - if (ds_file_group->ds_file_infos) { - g_ptr_array_free(ds_file_group->ds_file_infos, TRUE); - } - - ctf_fs_ds_index_destroy(ds_file_group->index); - - bt_stream_put_ref(ds_file_group->stream); - delete ds_file_group; -} - -static struct ctf_fs_ds_file_group *ctf_fs_ds_file_group_create(struct ctf_fs_trace *ctf_fs_trace, - struct ctf_stream_class *sc, - uint64_t stream_instance_id, - struct ctf_fs_ds_index *index) -{ - ctf_fs_ds_file_group *ds_file_group = new ctf_fs_ds_file_group; - ds_file_group->ds_file_infos = - g_ptr_array_new_with_free_func((GDestroyNotify) ctf_fs_ds_file_info_destroy); - if (!ds_file_group->ds_file_infos) { - goto error; - } - - ds_file_group->index = index; - - ds_file_group->stream_id = stream_instance_id; - BT_ASSERT(sc); - ds_file_group->sc = sc; - ds_file_group->ctf_fs_trace = ctf_fs_trace; - goto end; - -error: - ctf_fs_ds_file_group_destroy(ds_file_group); - ctf_fs_ds_index_destroy(index); - ds_file_group = NULL; - -end: - return ds_file_group; -} - /* Replace by g_ptr_array_insert when we depend on glib >= 2.40. */ static void array_insert(GPtrArray *array, gpointer element, size_t pos) { diff --git a/src/plugins/ctf/fs-src/fs.hpp b/src/plugins/ctf/fs-src/fs.hpp index b0052bb7..af790384 100644 --- a/src/plugins/ctf/fs-src/fs.hpp +++ b/src/plugins/ctf/fs-src/fs.hpp @@ -14,7 +14,6 @@ #include -#include "cpp-common/bt2c/data-len.hpp" #include "cpp-common/bt2c/glib-up.hpp" #include "cpp-common/bt2c/logging.hpp" @@ -123,79 +122,6 @@ struct ctf_fs_component ctf::src::ClkClsCfg clkClsCfg; }; -struct ctf_fs_ds_index_entry -{ - explicit ctf_fs_ds_index_entry(const bt2c::DataLen offsetParam, - const bt2c::DataLen packetSizeParam) noexcept : - offset(offsetParam), - packetSize(packetSizeParam) - { - } - - /* Weak, belongs to ctf_fs_ds_file_info. */ - const char *path = nullptr; - - /* Position of the packet from the beginning of the file. */ - bt2c::DataLen offset; - - /* Size of the packet. */ - bt2c::DataLen packetSize; - - /* - * Extracted from the packet context, relative to the respective fields' - * mapped clock classes (in cycles). - */ - uint64_t timestamp_begin = 0, timestamp_end = 0; - - /* - * Converted from the packet context, relative to the trace's EPOCH - * (in ns since EPOCH). - */ - int64_t timestamp_begin_ns = 0, timestamp_end_ns = 0; - - /* - * Packet sequence number, or UINT64_MAX if not present in the index. - */ - uint64_t packet_seq_num = 0; -}; - -struct ctf_fs_ds_index -{ - /* Array of pointer to struct ctf_fs_ds_index_entry. */ - GPtrArray *entries = nullptr; -}; - -struct ctf_fs_ds_file_group -{ - /* - * Array of struct ctf_fs_ds_file_info, owned by this. - * - * This is an _ordered_ array of data stream file infos which - * belong to this group (a single stream instance). - * - * You can call ctf_fs_ds_file_create() with one of those paths - * and the trace IR stream below. - */ - GPtrArray *ds_file_infos = nullptr; - - /* Owned by this */ - struct ctf_stream_class *sc = nullptr; - - /* Owned by this */ - bt_stream *stream = nullptr; - - /* Stream (instance) ID; -1ULL means none */ - uint64_t stream_id = 0; - - /* Weak, belongs to component */ - struct ctf_fs_trace *ctf_fs_trace = nullptr; - - /* - * Owned by this. - */ - struct ctf_fs_ds_index *index = nullptr; -}; - struct ctf_fs_msg_iter_data { explicit ctf_fs_msg_iter_data(bt_self_message_iterator *selfMsgIter) : diff --git a/src/plugins/ctf/fs-src/query.cpp b/src/plugins/ctf/fs-src/query.cpp index 3e25f168..91041582 100644 --- a/src/plugins/ctf/fs-src/query.cpp +++ b/src/plugins/ctf/fs-src/query.cpp @@ -19,6 +19,7 @@ #include "plugins/common/param-validation/param-validation.h" #include "../common/src/metadata/tsdl/decoder.hpp" +#include "data-stream-file.hpp" #include "fs.hpp" #include "query.hpp" -- 2.34.1