comparison 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
comparison
equal deleted inserted replaced
433:8999823db8b8 434:3a8bcc45c221
19 **/ 19 **/
20 20
21 21
22 #pragma once 22 #pragma once
23 23
24 #include "../../Framework/Toolbox/IWebService.h" 24 #include "../../Framework/Toolbox/BaseWebService.h"
25 #include "Oracle.h" 25 #include "Oracle.h"
26 #include "WebServiceGetCommand.h" 26 #include "WebServiceGetCommand.h"
27 #include "WebServicePostCommand.h" 27 #include "WebServicePostCommand.h"
28 #include "WebServiceDeleteCommand.h" 28 #include "WebServiceDeleteCommand.h"
29 #include "../../Applications/Generic/NativeStoneApplicationContext.h" 29 #include "../../Applications/Generic/NativeStoneApplicationContext.h"
31 namespace OrthancStone 31 namespace OrthancStone
32 { 32 {
33 // The OracleWebService performs HTTP requests in a native environment. 33 // The OracleWebService performs HTTP requests in a native environment.
34 // It uses a thread pool to handle multiple HTTP requests in a same time. 34 // It uses a thread pool to handle multiple HTTP requests in a same time.
35 // It works asynchronously to mimick the behaviour of the WebService running in a WASM environment. 35 // It works asynchronously to mimick the behaviour of the WebService running in a WASM environment.
36 class OracleWebService : public IWebService 36 class OracleWebService : public BaseWebService
37 { 37 {
38 private: 38 private:
39 Oracle& oracle_; 39 Oracle& oracle_;
40 NativeStoneApplicationContext& context_; 40 NativeStoneApplicationContext& context_;
41 Orthanc::WebServiceParameters parameters_; 41 Orthanc::WebServiceParameters parameters_;
42 42
43 class WebServiceCachedGetCommand;
44
43 public: 45 public:
44 OracleWebService(MessageBroker& broker, 46 OracleWebService(MessageBroker& broker,
45 Oracle& oracle, 47 Oracle& oracle,
46 const Orthanc::WebServiceParameters& parameters, 48 const Orthanc::WebServiceParameters& parameters,
47 NativeStoneApplicationContext& context) : 49 NativeStoneApplicationContext& context) :
48 IWebService(broker), 50 BaseWebService(broker),
49 oracle_(oracle), 51 oracle_(oracle),
50 context_(context), 52 context_(context),
51 parameters_(parameters) 53 parameters_(parameters)
52 { 54 {
53 }
54
55 virtual void GetAsync(const std::string& uri,
56 const HttpHeaders& headers,
57 Orthanc::IDynamicObject* payload, // takes ownership
58 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership
59 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,// takes ownership
60 unsigned int timeoutInSeconds = 60)
61 {
62 oracle_.Submit(new WebServiceGetCommand(broker_, successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_));
63 } 55 }
64 56
65 virtual void PostAsync(const std::string& uri, 57 virtual void PostAsync(const std::string& uri,
66 const HttpHeaders& headers, 58 const HttpHeaders& headers,
67 const std::string& body, 59 const std::string& body,
68 Orthanc::IDynamicObject* payload, // takes ownership 60 Orthanc::IDynamicObject* payload, // takes ownership
69 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership 61 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership
70 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, // takes ownership 62 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, // takes ownership
71 unsigned int timeoutInSeconds = 60) 63 unsigned int timeoutInSeconds = 60)
72 { 64 {
73 oracle_.Submit(new WebServicePostCommand(broker_, successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, body, payload, context_)); 65 oracle_.Submit(new WebServicePostCommand(GetBroker(), successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, body, payload, context_));
74 } 66 }
75 67
76 virtual void DeleteAsync(const std::string& uri, 68 virtual void DeleteAsync(const std::string& uri,
77 const HttpHeaders& headers, 69 const HttpHeaders& headers,
78 Orthanc::IDynamicObject* payload, 70 Orthanc::IDynamicObject* payload,
79 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, 71 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback,
80 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, 72 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,
81 unsigned int timeoutInSeconds = 60) 73 unsigned int timeoutInSeconds = 60)
82 { 74 {
83 oracle_.Submit(new WebServiceDeleteCommand(broker_, successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_)); 75 oracle_.Submit(new WebServiceDeleteCommand(GetBroker(), successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_));
84 } 76 }
77
78 protected:
79 virtual void GetAsyncInternal(const std::string& uri,
80 const HttpHeaders& headers,
81 Orthanc::IDynamicObject* payload, // takes ownership
82 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, // takes ownership
83 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL,// takes ownership
84 unsigned int timeoutInSeconds = 60)
85 {
86 oracle_.Submit(new WebServiceGetCommand(GetBroker(), successCallback, failureCallback, parameters_, uri, headers, timeoutInSeconds, payload, context_));
87 }
88
89 virtual void NotifyHttpSuccessLater(boost::shared_ptr<BaseWebService::CachedHttpRequestSuccessMessage> cachedHttpMessage,
90 Orthanc::IDynamicObject* payload, // takes ownership
91 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback);
92
85 }; 93 };
86 } 94 }