diff options
| -rw-r--r-- | src/zencore/basicfile.cpp | 4 | ||||
| -rw-r--r-- | src/zencore/include/zencore/basicfile.h | 57 |
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(); |