diff OrthancFramework/Sources/Compression/ZipWriter.h @ 4672:d9942d48fea7

ZipWriter::CancelStream(), ZipWriter::GetArchiveSize() and HttpOutput::AnswerWithoutBuffering()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 02 Jun 2021 17:35:39 +0200
parents b12faca76a52
children 13efc0967cea
line wrap: on
line diff
--- a/OrthancFramework/Sources/Compression/ZipWriter.h	Fri May 28 18:44:00 2021 +0200
+++ b/OrthancFramework/Sources/Compression/ZipWriter.h	Wed Jun 02 17:35:39 2021 +0200
@@ -65,6 +65,8 @@
       virtual void Write(const std::string& chunk) = 0;
 
       virtual void Close() = 0;
+
+      virtual uint64_t GetArchiveSize() const = 0;
     };
 
 
@@ -74,6 +76,7 @@
     private:
       std::string&   target_;
       ChunkedBuffer  chunked_;
+      uint64_t       archiveSize_;
       
     public:
       MemoryStream(std::string& target);
@@ -81,6 +84,8 @@
       virtual void Write(const std::string& chunk) ORTHANC_OVERRIDE;
       
       virtual void Close() ORTHANC_OVERRIDE;
+
+      virtual uint64_t GetArchiveSize() const ORTHANC_OVERRIDE;
     };
 
 
@@ -162,9 +167,17 @@
 
     void Write(const std::string& data);
 
-    void AcquireOutputStream(IOutputStream* stream);  // transfers ownership
+    void AcquireOutputStream(IOutputStream* stream, // transfers ownership
+                             bool isZip64);
 
     // The lifetime of the "target" buffer must be larger than that of ZipWriter
-    void SetMemoryOutput(std::string& target);
+    void SetMemoryOutput(std::string& target,
+                         bool isZip64);
+
+    void CancelStream();
+
+    // WARNING: "GetArchiveSize()" only has its final value after
+    // "Close()" has been called
+    uint64_t GetArchiveSize() const;
   };
 }