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 }