aboutsummaryrefslogtreecommitdiff
path: root/zenstore/basicfile.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-09-19 23:30:03 +0200
committerStefan Boberg <[email protected]>2021-09-19 23:30:03 +0200
commit6240dbc8aac714998e38b92850c3bff3d579f2ab (patch)
tree91adc07279f06f8a4c87a5f2aca4d8f9ae24041e /zenstore/basicfile.cpp
parentImplemended basic scrubbing / detection of disk corruption. Still needs more ... (diff)
downloadzen-6240dbc8aac714998e38b92850c3bff3d579f2ab.tar.xz
zen-6240dbc8aac714998e38b92850c3bff3d579f2ab.zip
Implemented BasicFile::StreamByteRange
Diffstat (limited to 'zenstore/basicfile.cpp')
-rw-r--r--zenstore/basicfile.cpp10
1 files changed, 8 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
@@ -98,12 +98,18 @@ BasicFile::ReadAll()
void
BasicFile::StreamFile(std::function<void(const void* Data, uint64_t Size)>&& ChunkFun)
{
+ StreamByteRange(0, FileSize(), std::move(ChunkFun));
+}
+
+void
+BasicFile::StreamByteRange(uint64_t FileOffset, uint64_t Size, std::function<void(const void* Data, uint64_t Size)>&& 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)
{