diff Framework/Deprecated/Toolbox/BaseWebService.cpp @ 875:200b4e0dddfc am-dev

BaseWebService: disable cache + correct handling of cache
author Alain Mazy <alain@mazy.be>
date Wed, 03 Jul 2019 10:12:09 +0200
parents 733c6db3e5a3
children 861c080ef47b
line wrap: on
line diff
--- a/Framework/Deprecated/Toolbox/BaseWebService.cpp	Wed Jul 03 10:11:22 2019 +0200
+++ b/Framework/Deprecated/Toolbox/BaseWebService.cpp	Wed Jul 03 10:12:09 2019 +0200
@@ -28,6 +28,7 @@
 
 #include <boost/shared_ptr.hpp>
 #include <algorithm>
+#include <Core/Logging.h>
 
 namespace Deprecated
 {
@@ -90,7 +91,7 @@
                                 OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback,
                                 unsigned int timeoutInSeconds)
   {
-    if (cache_.find(uri) == cache_.end())
+    if (!cacheEnabled_ || cache_.find(uri) == cache_.end())
     {
       GetAsyncInternal(uri, headers,
                        new BaseWebService::BaseWebServicePayload(successCallback, failureCallback, payload), // ownership is transfered
@@ -133,22 +134,27 @@
 
   void BaseWebService::CacheAndNotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message)
   {
-    while (cacheCurrentSize_ + message.GetAnswerSize() > cacheMaxSize_ && orderedCacheKeys_.size() > 0)
+    if (cacheEnabled_)
     {
-      const std::string& oldestUri = orderedCacheKeys_.back();
-      HttpCache::iterator it = cache_.find(oldestUri);
-      if (it != cache_.end())
+      while (cacheCurrentSize_ + message.GetAnswerSize() > cacheMaxSize_ && orderedCacheKeys_.size() > 0)
       {
-        cacheCurrentSize_ -= it->second->GetAnswerSize();
-        cache_.erase(it);
-      }
-      orderedCacheKeys_.pop_back();
+        VLOG(1) << "BaseWebService: clearing cache: " << cacheCurrentSize_ << "/" << cacheMaxSize_ << "(" << message.GetAnswerSize() << ")";
+        const std::string& oldestUri = orderedCacheKeys_.back();
+        HttpCache::iterator it = cache_.find(oldestUri);
+        if (it != cache_.end())
+        {
+          cacheCurrentSize_ -= it->second->GetAnswerSize();
+          cache_.erase(it);
+        }
+        orderedCacheKeys_.pop_back();
 
-    }
+      }
 
-    cache_[message.GetUri()] = boost::shared_ptr<CachedHttpRequestSuccessMessage>(new CachedHttpRequestSuccessMessage(message));
-    orderedCacheKeys_.push_front(message.GetUri());
-    cacheCurrentSize_ += message.GetAnswerSize();
+      boost::shared_ptr<CachedHttpRequestSuccessMessage> cachedMessage(new CachedHttpRequestSuccessMessage(message));
+      cache_[message.GetUri()] = cachedMessage;
+      orderedCacheKeys_.push_front(message.GetUri());
+      cacheCurrentSize_ += message.GetAnswerSize();
+    }
 
     NotifyHttpSuccess(message);
   }