aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/include
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-08-21 13:07:22 +0200
committerGitHub <[email protected]>2023-08-21 13:07:22 +0200
commitca5b35dcbde3e2da484572c821c4899763b0e0f0 (patch)
tree2d6d7a15f6c7900cf7f3c0fe4510086e4fa572a4 /src/zenutil/include
parentoplog mirror support (#367) (diff)
downloadzen-ca5b35dcbde3e2da484572c821c4899763b0e0f0.tar.xz
zen-ca5b35dcbde3e2da484572c821c4899763b0e0f0.zip
buffered file reading for oplog (#366)
* add BasicFileBuffer for buffered read of BasicFile * Use BasicFileBuffer when reading oplog * changelog
Diffstat (limited to 'src/zenutil/include')
-rw-r--r--src/zenutil/include/zenutil/basicfile.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/zenutil/include/zenutil/basicfile.h b/src/zenutil/include/zenutil/basicfile.h
index 1c5a31c5c..5a27befd9 100644
--- a/src/zenutil/include/zenutil/basicfile.h
+++ b/src/zenutil/include/zenutil/basicfile.h
@@ -120,6 +120,29 @@ public:
private:
};
+/** Adds a layer of buffered reading to a BasicFile
+
+This class is not intended for concurrent access, it is not thread safe.
+
+*/
+
+class BasicFileBuffer
+{
+public:
+ BasicFileBuffer(BasicFile& Base, uint64_t BufferSize);
+ ~BasicFileBuffer();
+
+ void Read(void* Data, uint64_t Size, uint64_t FileOffset);
+
+private:
+ BasicFile& m_Base;
+ uint8_t* m_Buffer;
+ const uint64_t m_BufferSize;
+ uint64_t m_Size;
+ uint64_t m_BufferStart;
+ uint64_t m_BufferEnd;
+};
+
ZENCORE_API void basicfile_forcelink();
} // namespace zen