From 5b4e12b8f527653eac0a160702b325662e2970ae Mon Sep 17 00:00:00 2001 From: GeorgH93 Date: Tue, 18 May 2021 20:14:15 +0200 Subject: [PATCH] Add method to manually split archive and delete last split if empty --- .../IO/Archive/MultiPartArchiveWriter.cpp | 13 ++++++++++++- .../IO/Archive/MultiPartArchiveWriter.hpp | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.cpp b/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.cpp index 5237304..1c99bd5 100644 --- a/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.cpp +++ b/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.cpp @@ -25,7 +25,12 @@ namespace openVulkanoCpp StartNewFile(); } - MultiPartArchiveWriter::~MultiPartArchiveWriter() = default; + MultiPartArchiveWriter::~MultiPartArchiveWriter() + { + bool deleteLast = m_writer->GetTotalWrittenBytes() == 0; + m_writer = nullptr; + if (deleteLast) std::filesystem::remove(m_archives.back()); + } void MultiPartArchiveWriter::StartNewFile() { @@ -96,4 +101,10 @@ namespace openVulkanoCpp m_dir = newDir; StartNewFile(); } + + void MultiPartArchiveWriter::Split() + { + if (!m_writer->GetTotalWrittenBytes()) return; // Nothing has been written yet, no need to split file + StartNewFile(); + } } diff --git a/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.hpp b/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.hpp index 95c284a..a209704 100644 --- a/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.hpp +++ b/openVulkanoCpp/IO/Archive/MultiPartArchiveWriter.hpp @@ -45,5 +45,7 @@ namespace openVulkanoCpp void Move(const std::filesystem::path& newDir); [[nodiscard]] const std::filesystem::path& GetDir() const { return m_dir; } + + void Split(); }; }