Mercurial > hg > orthanc
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; }