Mercurial > hg > orthanc-stone
diff Platforms/Generic/OracleWebService.h @ 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 | aee3d7941c9b |
children | a750f11892ec |
line wrap: on
line diff
--- a/Platforms/Generic/OracleWebService.h Mon Dec 03 14:22:47 2018 +0100 +++ b/Platforms/Generic/OracleWebService.h Mon Dec 03 18:03:30 2018 +0100 @@ -21,7 +21,7 @@ #pragma once -#include "../../Framework/Toolbox/IWebService.h" +#include "../../Framework/Toolbox/BaseWebService.h" #include "Oracle.h" #include "WebServiceGetCommand.h" #include "WebServicePostCommand.h" @@ -33,35 +33,27 @@ // The OracleWebService performs HTTP requests in a native environment. // It uses a thread pool to handle multiple HTTP requests in a same time. // It works asynchronously to mimick the behaviour of the WebService running in a WASM environment. - class OracleWebService : public IWebService + class OracleWebService : public BaseWebService { private: Oracle& oracle_; NativeStoneApplicationContext& context_; Orthanc::WebServiceParameters parameters_; + class WebServiceCachedGetCommand; + public: OracleWebService(MessageBroker& broker, Oracle& oracle, const Orthanc::WebServiceParameters& parameters, NativeStoneApplicationContext& context) : - IWebService(broker), + BaseWebService(broker), oracle_(oracle), context_(context), parameters_(parameters) { } - virtual void GetAsync(const std::string& uri, - const HttpHeaders& headers, - Orthanc::IDynamicObject* payload, // takes ownership - MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership - MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,// takes ownership - unsigned int timeoutInSeconds = 60) - { - oracle_.Submit(new WebServiceGetCommand(broker_, successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_)); - } - virtual void PostAsync(const std::string& uri, const HttpHeaders& headers, const std::string& body, @@ -70,7 +62,7 @@ MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, // takes ownership unsigned int timeoutInSeconds = 60) { - oracle_.Submit(new WebServicePostCommand(broker_, successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, body, payload, context_)); + oracle_.Submit(new WebServicePostCommand(GetBroker(), successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, body, payload, context_)); } virtual void DeleteAsync(const std::string& uri, @@ -80,7 +72,23 @@ MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, unsigned int timeoutInSeconds = 60) { - oracle_.Submit(new WebServiceDeleteCommand(broker_, successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_)); + oracle_.Submit(new WebServiceDeleteCommand(GetBroker(), successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_)); } + + protected: + virtual void GetAsyncInternal(const std::string& uri, + const HttpHeaders& headers, + Orthanc::IDynamicObject* payload, // takes ownership + MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership + MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,// takes ownership + unsigned int timeoutInSeconds = 60) + { + oracle_.Submit(new WebServiceGetCommand(GetBroker(), successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_)); + } + + virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage, + Orthanc::IDynamicObject* payload, // takes ownership + MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback); + }; }