diff Core/RestApi/RestApiOutput.cpp @ 1515:c94353fbd4e9

cont http compression
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 10 Aug 2015 17:18:36 +0200
parents d73a2178b319
children 4f8c8ef114db
line wrap: on
line diff
--- a/Core/RestApi/RestApiOutput.cpp	Mon Aug 10 16:43:59 2015 +0200
+++ b/Core/RestApi/RestApiOutput.cpp	Mon Aug 10 17:18:36 2015 +0200
@@ -80,8 +80,17 @@
   }
 
 
-  HttpCompression  RestApiOutput::GetPreferredCompression() const
+  HttpCompression  RestApiOutput::GetPreferredCompression(size_t bodySize) const
   {
+#if 0
+    // TODO
+    if (bodySize < 1024)
+    {
+      // Do not compress small answers
+      return HttpCompression_None;
+    }
+#endif    
+
     if (allowGzipCompression_)
     {
       return HttpCompression_Gzip;
@@ -108,13 +117,13 @@
   {
     CheckStatus();
 
+    std::string s;
+
     if (convertJsonToXml_)
     {
 #if ORTHANC_PUGIXML_ENABLED == 1
-      std::string s;
       Toolbox::JsonToXml(s, value);
       output_.SetContentType("application/xml");
-      output_.SendBody(s, GetPreferredCompression());
 #else
       LOG(ERROR) << "Orthanc was compiled without XML support";
       throw OrthancException(ErrorCode_InternalError);
@@ -124,9 +133,11 @@
     {
       Json::StyledWriter writer;
       output_.SetContentType("application/json");
-      output_.SendBody(writer.write(value), GetPreferredCompression());
+      s = writer.write(value);
     }
 
+    output_.SendBody(s, GetPreferredCompression(s.size()));
+
     alreadySent_ = true;
   }
 
@@ -143,7 +154,7 @@
   {
     CheckStatus();
     output_.SetContentType(contentType.c_str());
-    output_.SendBody(buffer, length, GetPreferredCompression());
+    output_.SendBody(buffer, length, GetPreferredCompression(length));
     alreadySent_ = true;
   }