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