diff OrthancFramework/Sources/HttpClient.h @ 4650:9804d6490872

Reduced memory consumption of HTTP/REST plugins calls on POST/PUT if chunked transfer is disabled
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 04 May 2021 10:57:42 +0200
parents d9473bd5ed43
children e8967149d87a
line wrap: on
line diff
--- a/OrthancFramework/Sources/HttpClient.h	Fri Apr 30 10:09:50 2021 +0200
+++ b/OrthancFramework/Sources/HttpClient.h	Tue May 04 10:57:42 2021 +0200
@@ -106,6 +106,11 @@
     bool headersToLowerCase_;
     bool redirectionFollowed_;
 
+    // New in Orthanc 1.9.3 to avoid memcpy()
+    bool        hasExternalBody_;
+    const void* externalBodyData_;
+    size_t      externalBodySize_;
+
     void Setup();
 
     void operator= (const HttpClient&);  // Assignment forbidden
@@ -141,14 +146,23 @@
 
     long GetTimeout() const;
 
-    void SetBody(const std::string& data);
+    void AssignBody(const std::string& data);
 
-    std::string& GetBody();
-
-    const std::string& GetBody() const;
+    void AssignBody(const void* data,
+                    size_t size);
 
     void SetBody(IRequestBody& body);
 
+    // New in Orthanc 1.9.3: The "data" buffer must have a lifetime
+    // that is longer than the HttpClient object
+    void SetExternalBody(const void* data,
+                         size_t size);
+
+    void SetExternalBody(const std::string& data)
+    {
+      SetExternalBody(data.empty() ? NULL : data.c_str(), data.size());
+    }
+
     void ClearBody();
 
     void SetVerbose(bool isVerbose);