Mercurial > hg > orthanc-stone
comparison Framework/Deprecated/Toolbox/IWebService.h @ 1222:21c2b0eee53c broker
deprecating MessageHandler
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 07 Dec 2019 18:18:07 +0100 |
parents | e146743f6cdc |
children | 0ca50d275b9a |
comparison
equal
deleted
inserted
replaced
1218:6f3f1ef347a3 | 1222:21c2b0eee53c |
---|---|
31 #include <string> | 31 #include <string> |
32 #include <map> | 32 #include <map> |
33 | 33 |
34 namespace Deprecated | 34 namespace Deprecated |
35 { | 35 { |
36 template <typename TMessage> | |
37 class MessageHandler : public OrthancStone::ICallable | |
38 { | |
39 }; | |
40 | |
41 | |
42 template <typename TObserver, | |
43 typename TMessage> | |
44 class DeprecatedCallable : public MessageHandler<TMessage> | |
45 { | |
46 private: | |
47 typedef void (TObserver::* MemberMethod) (const TMessage&); | |
48 | |
49 boost::weak_ptr<OrthancStone::IObserver> observer_; | |
50 MemberMethod function_; | |
51 | |
52 public: | |
53 DeprecatedCallable(boost::shared_ptr<TObserver> observer, | |
54 MemberMethod function) : | |
55 observer_(observer), | |
56 function_(function) | |
57 { | |
58 } | |
59 | |
60 virtual void Apply(const OrthancStone::IMessage& message) | |
61 { | |
62 boost::shared_ptr<OrthancStone::IObserver> lock(observer_); | |
63 if (lock) | |
64 { | |
65 TObserver& observer = dynamic_cast<TObserver&>(*lock); | |
66 const TMessage& typedMessage = dynamic_cast<const TMessage&>(message); | |
67 (observer.*function_) (typedMessage); | |
68 } | |
69 } | |
70 | |
71 virtual const OrthancStone::MessageIdentifier& GetMessageIdentifier() | |
72 { | |
73 return TMessage::GetStaticIdentifier(); | |
74 } | |
75 | |
76 virtual boost::weak_ptr<OrthancStone::IObserver> GetObserver() const | |
77 { | |
78 return observer_; | |
79 } | |
80 }; | |
81 | |
82 | |
36 // The IWebService performs HTTP requests. | 83 // The IWebService performs HTTP requests. |
37 // Since applications can run in native or WASM environment and, since | 84 // Since applications can run in native or WASM environment and, since |
38 // in a WASM environment, the WebService is asynchronous, the IWebservice | 85 // in a WASM environment, the WebService is asynchronous, the IWebservice |
39 // also implements an asynchronous interface: you must schedule a request | 86 // also implements an asynchronous interface: you must schedule a request |
40 // and you'll be notified when the response/error is ready. | 87 // and you'll be notified when the response/error is ready. |
142 virtual void EnableCache(bool enable) = 0; | 189 virtual void EnableCache(bool enable) = 0; |
143 | 190 |
144 virtual void GetAsync(const std::string& uri, | 191 virtual void GetAsync(const std::string& uri, |
145 const HttpHeaders& headers, | 192 const HttpHeaders& headers, |
146 Orthanc::IDynamicObject* payload /* takes ownership */, | 193 Orthanc::IDynamicObject* payload /* takes ownership */, |
147 OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, | 194 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, |
148 OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, | 195 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, |
149 unsigned int timeoutInSeconds = 60) = 0; | 196 unsigned int timeoutInSeconds = 60) = 0; |
150 | 197 |
151 virtual void PostAsync(const std::string& uri, | 198 virtual void PostAsync(const std::string& uri, |
152 const HttpHeaders& headers, | 199 const HttpHeaders& headers, |
153 const std::string& body, | 200 const std::string& body, |
154 Orthanc::IDynamicObject* payload /* takes ownership */, | 201 Orthanc::IDynamicObject* payload /* takes ownership */, |
155 OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, | 202 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, |
156 OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, | 203 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, |
157 unsigned int timeoutInSeconds = 60) = 0; | 204 unsigned int timeoutInSeconds = 60) = 0; |
158 | 205 |
159 virtual void DeleteAsync(const std::string& uri, | 206 virtual void DeleteAsync(const std::string& uri, |
160 const HttpHeaders& headers, | 207 const HttpHeaders& headers, |
161 Orthanc::IDynamicObject* payload /* takes ownership */, | 208 Orthanc::IDynamicObject* payload /* takes ownership */, |
162 OrthancStone::MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, | 209 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallback, |
163 OrthancStone::MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, | 210 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallback = NULL, |
164 unsigned int timeoutInSeconds = 60) = 0; | 211 unsigned int timeoutInSeconds = 60) = 0; |
165 }; | 212 }; |
166 } | 213 } |