From 79a8749249c61799ff894695431376f997c25781 Mon Sep 17 00:00:00 2001 From: Jan Sucan Date: Wed, 22 Jan 2025 15:01:36 +0100 Subject: Move multi-buffering to BufferedStream::Reader --- src/format_v2.h | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/format_v2.h') diff --git a/src/format_v2.h b/src/format_v2.h index 3a0fea2..e9b4edb 100644 --- a/src/format_v2.h +++ b/src/format_v2.h @@ -84,16 +84,16 @@ class Reader { public: Reader(std::istream &istream, size_t buffer_size) - : m_reader{BufferedStream::Reader{istream, buffer_size}}, m_eof{ - false} {}; + : m_reader{BufferedStream::Reader{istream, buffer_size, 1}}, + m_eof{false} {}; bool eof() { return m_eof; }; uint64_t readOffset() { uint64_t raw_offset; - const size_t r{m_reader.read(reinterpret_cast(&raw_offset), - sizeof(raw_offset))}; + const size_t r{m_reader.read(sizeof(raw_offset), + reinterpret_cast(&raw_offset))}; if (r != sizeof(raw_offset)) { m_eof = true; } @@ -103,17 +103,21 @@ class Reader size_t readSize() { uint32_t raw_size; - const size_t r{m_reader.read(reinterpret_cast(&raw_size), - sizeof(raw_size))}; + const size_t r{m_reader.read(sizeof(raw_size), + reinterpret_cast(&raw_size))}; if (r != sizeof(raw_size)) { m_eof = true; } return be32toh(raw_size); }; - size_t readData(size_t size, char **return_data) + RecordData readRecordData(size_t size) { - return m_reader.tryRead(size, return_data); + const BufferedStream::DataPart dp = m_reader.readMultipart(size); + return RecordData{ + .size = dp.size, + .data = dp.data, + }; }; private: -- cgit v1.2.3