Skip to content

Commit

Permalink
Templatize StreamReaderDataContext.
Browse files Browse the repository at this point in the history
  • Loading branch information
junhaoliao committed Oct 8, 2024
1 parent ab37228 commit f2ed47e
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/clp_ffi_js/ir/StreamReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,9 @@ auto StreamReader::decode_range(size_t begin_idx, size_t end_idx) const -> Decod
}

StreamReader::StreamReader(
StreamReaderDataContext&& stream_reader_data_context
StreamReaderDataContext<deserializer_t>&& stream_reader_data_context
)
: m_stream_reader_data_context{std::make_unique<StreamReaderDataContext>(
: m_stream_reader_data_context{std::make_unique<StreamReaderDataContext<deserializer_t>>(
std::move(stream_reader_data_context)
)} {}
} // namespace clp_ffi_js::ir
Expand Down
6 changes: 4 additions & 2 deletions src/clp_ffi_js/ir/StreamReader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,14 @@ class StreamReader {
[[nodiscard]] auto decode_range(size_t begin_idx, size_t end_idx) const -> DecodedResultsTsType;

private:
using deserializer_t = clp::ffi::ir_stream::Deserializer;

// Constructor
explicit StreamReader(StreamReaderDataContext&& stream_reader_data_context);
explicit StreamReader(StreamReaderDataContext<deserializer_t>&& stream_reader_data_context);

// Variables
std::vector<clp::ffi::KeyValuePairLogEvent> m_encoded_log_events;
std::unique_ptr<StreamReaderDataContext> m_stream_reader_data_context;
std::unique_ptr<StreamReaderDataContext<deserializer_t>> m_stream_reader_data_context;
};
} // namespace clp_ffi_js::ir

Expand Down
11 changes: 7 additions & 4 deletions src/clp_ffi_js/ir/StreamReaderDataContext.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,19 @@
namespace clp_ffi_js::ir {
/**
* The data context for a `StreamReader`. It encapsulates a chain of the following resources:
* A `clp::ir::LogEventDeserializer` that reads from a
* A `clp::ir::LogEventDeserializer` / `clp::ffi::ir_stream::Deserializer` that reads from a
* `clp::streaming_compression::zstd::Decompressor`, which in turn reads from a `clp::Array`.
*
* @tparam deserializer_t Type of deserializer for decoding the stream.
*/
template <typename deserializer_t>
class StreamReaderDataContext {
public:
// Constructors
StreamReaderDataContext(
clp::Array<char>&& data_buffer,
std::unique_ptr<clp::streaming_compression::zstd::Decompressor>&& zstd_decompressor,
clp::ffi::ir_stream::Deserializer deserializer
deserializer_t deserializer
)
: m_data_buffer{std::move(data_buffer)},
m_zstd_decompressor{std::move(zstd_decompressor)},
Expand Down Expand Up @@ -48,14 +51,14 @@ class StreamReaderDataContext {
/**
* @return A reference to the deserializer.
*/
[[nodiscard]] auto get_deserializer() -> clp::ffi::ir_stream::Deserializer& {
[[nodiscard]] auto get_deserializer() -> deserializer_t& {
return m_deserializer;
}

private:
clp::Array<char> m_data_buffer;
std::unique_ptr<clp::streaming_compression::zstd::Decompressor> m_zstd_decompressor;
clp::ffi::ir_stream::Deserializer m_deserializer;
deserializer_t m_deserializer;
};
} // namespace clp_ffi_js::ir

Expand Down

0 comments on commit f2ed47e

Please sign in to comment.