From 6240dbc8aac714998e38b92850c3bff3d579f2ab Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sun, 19 Sep 2021 23:30:03 +0200 Subject: Implemented BasicFile::StreamByteRange --- zenstore/basicfile.cpp | 10 ++++++++-- zenstore/include/zenstore/basicfile.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/zenstore/basicfile.cpp b/zenstore/basicfile.cpp index 126f2a8b3..0b92a8979 100644 --- a/zenstore/basicfile.cpp +++ b/zenstore/basicfile.cpp @@ -97,13 +97,19 @@ BasicFile::ReadAll() void BasicFile::StreamFile(std::function&& ChunkFun) +{ + StreamByteRange(0, FileSize(), std::move(ChunkFun)); +} + +void +BasicFile::StreamByteRange(uint64_t FileOffset, uint64_t Size, std::function&& ChunkFun) { const uint64_t ChunkSize = 128 * 1024; IoBuffer ReadBuffer{ChunkSize}; void* BufferPtr = ReadBuffer.MutableData(); - uint64_t RemainBytes = FileSize(); - uint64_t CurrentOffset = 0; + uint64_t RemainBytes = Size; + uint64_t CurrentOffset = FileOffset; while (RemainBytes) { diff --git a/zenstore/include/zenstore/basicfile.h b/zenstore/include/zenstore/basicfile.h index a5874cfe4..d4d65b366 100644 --- a/zenstore/include/zenstore/basicfile.h +++ b/zenstore/include/zenstore/basicfile.h @@ -31,6 +31,7 @@ public: void Close(); void Read(void* Data, uint64_t Size, uint64_t FileOffset); void StreamFile(std::function&& ChunkFun); + void StreamByteRange(uint64_t FileOffset, uint64_t Size, std::function&& ChunkFun); void Write(const void* Data, uint64_t Size, uint64_t FileOffset); void Flush(); uint64_t FileSize(); -- cgit v1.2.3