aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2025-05-14 09:32:35 +0200
committerDan Engelbrecht <[email protected]>2025-05-14 09:32:35 +0200
commit6d9f42c2a06b25009dde164db008ff84f5d22687 (patch)
tree75bdc203ff99cef0fbaafda0a7d793db6c371ffb
parentcorrupt chunk blocks should not result in error, only warning (diff)
downloadzen-de/disk-io-with-retry.tar.xz
zen-de/disk-io-with-retry.zip
remove GetNoRetryCallback()de/disk-io-with-retry
-rw-r--r--src/zencore/basicfile.cpp4
-rw-r--r--src/zencore/include/zencore/basicfile.h57
2 files changed, 24 insertions, 37 deletions
diff --git a/src/zencore/basicfile.cpp b/src/zencore/basicfile.cpp
index c4c41edca..6d1e1ee2b 100644
--- a/src/zencore/basicfile.cpp
+++ b/src/zencore/basicfile.cpp
@@ -132,7 +132,7 @@ BasicFile::Open(const std::filesystem::path& FileName, Mode InMode, std::error_c
if (FileHandle == INVALID_HANDLE_VALUE)
{
Ec = MakeErrorCodeFromLastError();
- if (!RetryCallback(Ec))
+ if (!RetryCallback || !RetryCallback(Ec))
{
break;
}
@@ -168,7 +168,7 @@ BasicFile::Open(const std::filesystem::path& FileName, Mode InMode, std::error_c
if (Fd < 0)
{
Ec = MakeErrorCodeFromLastError();
- if (!RetryCallback(Ec))
+ if (!RetryCallback || !RetryCallback(Ec))
{
break;
}
diff --git a/src/zencore/include/zencore/basicfile.h b/src/zencore/include/zencore/basicfile.h
index b06b23dd5..227d00d1f 100644
--- a/src/zencore/include/zencore/basicfile.h
+++ b/src/zencore/include/zencore/basicfile.h
@@ -47,38 +47,31 @@ public:
};
typedef std::function<bool(const std::error_code& Ec)> RetryCallback;
- static RetryCallback GetNoRetryCallback()
- {
- return [](const std::error_code& Ec) -> bool {
- ZEN_UNUSED(Ec);
- return false;
- };
- }
static RetryCallback GetDefaultRetryCallback(int RetryCount = 3, uint64_t DelayIncrementMs = 0, std::string_view Context = {});
- BasicFile(const std::filesystem::path& FileName, Mode Mode, RetryCallback&& RetryCallback = GetNoRetryCallback());
- BasicFile(const std::filesystem::path& FileName, Mode Mode, std::error_code& Ec, RetryCallback&& RetryCallback = GetNoRetryCallback());
+ BasicFile(const std::filesystem::path& FileName, Mode Mode, RetryCallback&& RetryCallback = {});
+ BasicFile(const std::filesystem::path& FileName, Mode Mode, std::error_code& Ec, RetryCallback&& RetryCallback = {});
- void Open(const std::filesystem::path& FileName, Mode Mode, RetryCallback&& RetryCallback = GetNoRetryCallback());
- void Open(const std::filesystem::path& FileName, Mode Mode, std::error_code& Ec, RetryCallback&& RetryCallback = GetNoRetryCallback());
- void Close();
- void Read(void* Data, uint64_t Size, uint64_t FileOffset, RetryCallback&& Retry = GetNoRetryCallback());
+ void Open(const std::filesystem::path& FileName, Mode Mode, RetryCallback&& RetryCallback = {});
+ void Open(const std::filesystem::path& FileName, Mode Mode, std::error_code& Ec, RetryCallback&& RetryCallback = {});
+ void Close();
+ void Read(void* Data, uint64_t Size, uint64_t FileOffset, RetryCallback&& Retry = {});
IoBuffer MakeBufferFromRange(uint64_t FileOffset, uint64_t ByteCount);
void StreamFile(std::function<void(const void* Data, uint64_t Size)>&& ChunkFun);
void StreamByteRange(uint64_t FileOffset, uint64_t Size, std::function<void(const void* Data, uint64_t Size)>&& ChunkFun);
- void Write(MemoryView Data, uint64_t FileOffset, RetryCallback&& Retry = GetNoRetryCallback());
- void Write(MemoryView Data, uint64_t FileOffset, std::error_code& Ec, RetryCallback&& Retry = GetNoRetryCallback());
- uint64_t Write(const CompositeBuffer& Data, uint64_t FileOffset, RetryCallback&& Retry = GetNoRetryCallback());
- uint64_t Write(const CompositeBuffer& Data, uint64_t FileOffset, std::error_code& Ec, RetryCallback&& Retry = GetNoRetryCallback());
- void Write(const void* Data, uint64_t Size, uint64_t FileOffset, RetryCallback&& Retry = GetNoRetryCallback());
- void Write(const void* Data, uint64_t Size, uint64_t FileOffset, std::error_code& Ec, RetryCallback&& Retry = GetNoRetryCallback());
+ void Write(MemoryView Data, uint64_t FileOffset, RetryCallback&& Retry = {});
+ void Write(MemoryView Data, uint64_t FileOffset, std::error_code& Ec, RetryCallback&& Retry = {});
+ uint64_t Write(const CompositeBuffer& Data, uint64_t FileOffset, RetryCallback&& Retry = {});
+ uint64_t Write(const CompositeBuffer& Data, uint64_t FileOffset, std::error_code& Ec, RetryCallback&& Retry = {});
+ void Write(const void* Data, uint64_t Size, uint64_t FileOffset, RetryCallback&& Retry = {});
+ void Write(const void* Data, uint64_t Size, uint64_t FileOffset, std::error_code& Ec, RetryCallback&& Retry = {});
void Flush();
[[nodiscard]] uint64_t FileSize() const;
[[nodiscard]] uint64_t FileSize(std::error_code& Ec) const;
void SetFileSize(uint64_t FileSize);
- IoBuffer ReadAll(RetryCallback&& Retry = GetNoRetryCallback());
- void WriteAll(IoBuffer Data, std::error_code& Ec, RetryCallback&& Retry = GetNoRetryCallback());
+ IoBuffer ReadAll(RetryCallback&& Retry = {});
+ void WriteAll(IoBuffer Data, std::error_code& Ec, RetryCallback&& Retry = {});
void Attach(void* Handle);
void* Detach();
@@ -110,12 +103,8 @@ public:
TemporaryFile(const TemporaryFile&) = delete;
TemporaryFile& operator=(const TemporaryFile&) = delete;
- void CreateTemporary(std::filesystem::path TempDirName,
- std::error_code& Ec,
- BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
- void MoveTemporaryIntoPlace(std::filesystem::path FinalFileName,
- std::error_code& Ec,
- BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
+ void CreateTemporary(std::filesystem::path TempDirName, std::error_code& Ec, BasicFile::RetryCallback&& Retry = {});
+ void MoveTemporaryIntoPlace(std::filesystem::path FinalFileName, std::error_code& Ec, BasicFile::RetryCallback&& Retry = {});
const std::filesystem::path& GetPath() const { return m_TempPath; }
static void SafeWriteFile(const std::filesystem::path& Path, MemoryView Data);
@@ -187,11 +176,11 @@ public:
BasicFileWriter(BasicFile& Base, uint64_t BufferSize);
~BasicFileWriter();
- void Write(const void* Data, uint64_t Size, uint64_t FileOffset, BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
- void Write(const CompositeBuffer& Data, uint64_t FileOffset, BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
- void AddPadding(uint64_t Padding, BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
- uint64_t AlignTo(uint64_t Alignment, BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
- void Flush(BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
+ void Write(const void* Data, uint64_t Size, uint64_t FileOffset, BasicFile::RetryCallback&& Retry = {});
+ void Write(const CompositeBuffer& Data, uint64_t FileOffset, BasicFile::RetryCallback&& Retry = {});
+ void AddPadding(uint64_t Padding, BasicFile::RetryCallback&& Retry = {});
+ uint64_t AlignTo(uint64_t Alignment, BasicFile::RetryCallback&& Retry = {});
+ void Flush(BasicFile::RetryCallback&& Retry = {});
private:
BasicFile& m_Base;
@@ -201,9 +190,7 @@ private:
uint64_t m_BufferEnd;
};
-IoBuffer WriteToTempFile(CompositeBuffer&& Buffer,
- const std::filesystem::path& Path,
- BasicFile::RetryCallback&& Retry = BasicFile::GetNoRetryCallback());
+IoBuffer WriteToTempFile(CompositeBuffer&& Buffer, const std::filesystem::path& Path, BasicFile::RetryCallback&& Retry = {});
ZENCORE_API void basicfile_forcelink();