diff options
| author | Stefan Boberg <[email protected]> | 2021-09-19 23:30:03 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-19 23:30:03 +0200 |
| commit | 6240dbc8aac714998e38b92850c3bff3d579f2ab (patch) | |
| tree | 91adc07279f06f8a4c87a5f2aca4d8f9ae24041e /zenstore/basicfile.cpp | |
| parent | Implemended basic scrubbing / detection of disk corruption. Still needs more ... (diff) | |
| download | zen-6240dbc8aac714998e38b92850c3bff3d579f2ab.tar.xz zen-6240dbc8aac714998e38b92850c3bff3d579f2ab.zip | |
Implemented BasicFile::StreamByteRange
Diffstat (limited to 'zenstore/basicfile.cpp')
| -rw-r--r-- | zenstore/basicfile.cpp | 10 |
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) { |