Mercurial > hg > orthanc-stone
diff Framework/Toolbox/OrthancApiClient.cpp @ 434:3a8bcc45c221 am-vsol-upgrade
moved the HTTP cache from OrthancApiClient to BaseWebService (not implemented yet in WASM)
author | am@osimis.io |
---|---|
date | Mon, 03 Dec 2018 18:03:30 +0100 |
parents | b85f635f1eb5 |
children | a750f11892ec |
line wrap: on
line diff
--- a/Framework/Toolbox/OrthancApiClient.cpp Mon Dec 03 14:22:47 2018 +0100 +++ b/Framework/Toolbox/OrthancApiClient.cpp Mon Dec 03 18:03:30 2018 +0100 @@ -167,60 +167,13 @@ }; - class OrthancApiClient::CachedHttpRequestSuccessMessage - { - protected: - std::string uri_; - void* answer_; - size_t answerSize_; - IWebService::HttpHeaders answerHeaders_; - - public: - CachedHttpRequestSuccessMessage(const IWebService::HttpRequestSuccessMessage& message) : - uri_(message.GetUri()), - answerSize_(message.GetAnswerSize()), - answerHeaders_(message.GetAnswerHttpHeaders()) - { - answer_ = malloc(answerSize_); - memcpy(answer_, message.GetAnswer(), answerSize_); - } - - ~CachedHttpRequestSuccessMessage() - { - free(answer_); - } - - const std::string& GetUri() const - { - return uri_; - } - - const void* GetAnswer() const - { - return answer_; - } - - size_t GetAnswerSize() const - { - return answerSize_; - } - - const IWebService::HttpHeaders& GetAnswerHttpHeaders() const - { - return answerHeaders_; - } - - }; - - OrthancApiClient::OrthancApiClient(MessageBroker& broker, IWebService& web, const std::string& baseUrl) : IObservable(broker), IObserver(broker), web_(web), - baseUrl_(baseUrl), - cacheEnabled_(true) + baseUrl_(baseUrl) { } @@ -232,22 +185,13 @@ Orthanc::IDynamicObject* payload) { IWebService::HttpHeaders emptyHeaders; - if (cacheEnabled_) - { - HandleFromCache(baseUrl_ + uri, - emptyHeaders, - new WebServicePayload(successCallback, failureCallback, payload)); - } - else - { - web_.GetAsync(baseUrl_ + uri, - emptyHeaders, - new WebServicePayload(successCallback, failureCallback, payload), - new Callable<OrthancApiClient, IWebService::HttpRequestSuccessMessage> - (*this, &OrthancApiClient::NotifyHttpSuccess), - new Callable<OrthancApiClient, IWebService::HttpRequestErrorMessage> - (*this, &OrthancApiClient::NotifyHttpError)); - } + web_.GetAsync(baseUrl_ + uri, + emptyHeaders, + new WebServicePayload(successCallback, failureCallback, payload), + new Callable<OrthancApiClient, IWebService::HttpRequestSuccessMessage> + (*this, &OrthancApiClient::NotifyHttpSuccess), + new Callable<OrthancApiClient, IWebService::HttpRequestErrorMessage> + (*this, &OrthancApiClient::NotifyHttpError)); } @@ -262,37 +206,6 @@ headers["Accept"] = contentType; GetBinaryAsync(uri, headers, successCallback, failureCallback, payload); } - - - void OrthancApiClient::HandleFromCache(const std::string& uri, - const IWebService::HttpHeaders& headers, - Orthanc::IDynamicObject* payload // takes ownership - ) - { - if (cache_.find(uri) == cache_.end()) - { - web_.GetAsync(uri, headers, - payload, // ownership is transfered - new Callable<OrthancApiClient, IWebService::HttpRequestSuccessMessage> - (*this, &OrthancApiClient::CacheAndNotifyHttpSuccess), - new Callable<OrthancApiClient, IWebService::HttpRequestErrorMessage> - (*this, &OrthancApiClient::NotifyHttpError)); - } - else - { - std::auto_ptr<Orthanc::IDynamicObject> payloadRaii(payload); // make sure payload is deleted whatever happens - - const OrthancApiClient::CachedHttpRequestSuccessMessage& cachedMessage = *(cache_[uri]); - IWebService::HttpRequestSuccessMessage successMessage(cachedMessage.GetUri(), - cachedMessage.GetAnswer(), - cachedMessage.GetAnswerSize(), - cachedMessage.GetAnswerHttpHeaders(), - payloadRaii.get()); - NotifyHttpSuccess(successMessage); - } - - } - void OrthancApiClient::GetBinaryAsync( const std::string& uri, @@ -303,21 +216,12 @@ { // printf("GET [%s] [%s]\n", baseUrl_.c_str(), uri.c_str()); - if (cacheEnabled_) - { - HandleFromCache(baseUrl_ + uri, - headers, - new WebServicePayload(successCallback, failureCallback, payload)); - } - else - { - web_.GetAsync(baseUrl_ + uri, headers, - new WebServicePayload(successCallback, failureCallback, payload), - new Callable<OrthancApiClient, IWebService::HttpRequestSuccessMessage> - (*this, &OrthancApiClient::NotifyHttpSuccess), - new Callable<OrthancApiClient, IWebService::HttpRequestErrorMessage> - (*this, &OrthancApiClient::NotifyHttpError)); - } + web_.GetAsync(baseUrl_ + uri, headers, + new WebServicePayload(successCallback, failureCallback, payload), + new Callable<OrthancApiClient, IWebService::HttpRequestSuccessMessage> + (*this, &OrthancApiClient::NotifyHttpSuccess), + new Callable<OrthancApiClient, IWebService::HttpRequestErrorMessage> + (*this, &OrthancApiClient::NotifyHttpError)); } @@ -392,12 +296,6 @@ } } - void OrthancApiClient::CacheAndNotifyHttpSuccess(const IWebService::HttpRequestSuccessMessage& message) - { - cache_[message.GetUri()] = boost::shared_ptr<CachedHttpRequestSuccessMessage>(new CachedHttpRequestSuccessMessage(message)); - NotifyHttpSuccess(message); - } - void OrthancApiClient::NotifyHttpError(const IWebService::HttpRequestErrorMessage& message) { if (message.HasPayload())