diff options
| author | Dan Engelbrecht <[email protected]> | 2024-08-30 11:26:42 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-08-30 11:26:42 +0200 |
| commit | cbb9ed149517cf781bf21bff4650d7d01bd6d567 (patch) | |
| tree | a185fe2a84cd6681caae7a71bb72d398421f97b6 /src/zenutil/basicfile.cpp | |
| parent | zenserver process launch/termination improvements (#138) (diff) | |
| download | zen-cbb9ed149517cf781bf21bff4650d7d01bd6d567.tar.xz zen-cbb9ed149517cf781bf21bff4650d7d01bd6d567.zip | |
meta info store (#75)
- Feature: Added option `--gc-cache-attachment-store` which caches referenced attachments in cache records on disk for faster GC - default is `false`
- Feature: Added option `--gc-projectstore-attachment-store` which caches referenced attachments in project store oplogs on disk for faster GC - default is `false`
Diffstat (limited to 'src/zenutil/basicfile.cpp')
| -rw-r--r-- | src/zenutil/basicfile.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/zenutil/basicfile.cpp b/src/zenutil/basicfile.cpp index 266146ca1..174125069 100644 --- a/src/zenutil/basicfile.cpp +++ b/src/zenutil/basicfile.cpp @@ -372,7 +372,7 @@ BasicFile::Flush() } uint64_t -BasicFile::FileSize() +BasicFile::FileSize() const { #if ZEN_PLATFORM_WINDOWS ULARGE_INTEGER liFileSize; @@ -401,7 +401,7 @@ BasicFile::FileSize() } uint64_t -BasicFile::FileSize(std::error_code& Ec) +BasicFile::FileSize(std::error_code& Ec) const { #if ZEN_PLATFORM_WINDOWS ULARGE_INTEGER liFileSize; @@ -565,20 +565,27 @@ TemporaryFile::MoveTemporaryIntoPlace(std::filesystem::path FinalFileName, std:: ////////////////////////////////////////////////////////////////////////// void -TemporaryFile::SafeWriteFile(std::filesystem::path Path, MemoryView Data) +TemporaryFile::SafeWriteFile(const std::filesystem::path& Path, MemoryView Data) { TemporaryFile TempFile; std::error_code Ec; - TempFile.CreateTemporary(Path.parent_path(), Ec); + SafeWriteFile(Path, Data, Ec); if (Ec) { - throw std::system_error(Ec, fmt::format("Failed to create temp file for file at '{}'", Path)); + throw std::system_error(Ec, fmt::format("Failed to safely write file '{}'", Path)); } - TempFile.Write(Data, 0); - TempFile.MoveTemporaryIntoPlace(Path, Ec); - if (Ec) +} + +void +TemporaryFile::SafeWriteFile(const std::filesystem::path& Path, MemoryView Data, std::error_code& OutEc) +{ + TemporaryFile TempFile; + if (TempFile.CreateTemporary(Path.parent_path(), OutEc); !OutEc) { - throw std::system_error(Ec, fmt::format("Failed to move temp file '{}' to '{}'", TempFile.GetPath(), Path)); + if (TempFile.Write(Data, 0, OutEc); !OutEc) + { + TempFile.MoveTemporaryIntoPlace(Path, OutEc); + } } } |