Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/IWebService.h @ 299:3897f9f28cfa am-callable-and-promise
backup work in progress: updated messaging framework with ICallable
author | am@osimis.io |
---|---|
date | Fri, 14 Sep 2018 16:44:01 +0200 |
parents | 8c8da145fefa |
children | b4abaeb783b1 |
comparison
equal
deleted
inserted
replaced
298:f58bfb7bbcc9 | 299:3897f9f28cfa |
---|---|
21 | 21 |
22 #pragma once | 22 #pragma once |
23 | 23 |
24 #include <Core/IDynamicObject.h> | 24 #include <Core/IDynamicObject.h> |
25 #include "../../Framework/Messages/IObserver.h" | 25 #include "../../Framework/Messages/IObserver.h" |
26 #include "../../Framework/Messages/ICallable.h" | |
26 #include <string> | 27 #include <string> |
28 #include <map> | |
27 #include <Core/Logging.h> | 29 #include <Core/Logging.h> |
28 | 30 |
29 namespace OrthancStone | 31 namespace OrthancStone |
30 { | 32 { |
31 // The IWebService performs HTTP requests. | 33 // The IWebService performs HTTP requests. |
37 { | 39 { |
38 protected: | 40 protected: |
39 MessageBroker& broker_; | 41 MessageBroker& broker_; |
40 public: | 42 public: |
41 typedef std::map<std::string, std::string> Headers; | 43 typedef std::map<std::string, std::string> Headers; |
44 | |
45 struct NewHttpRequestSuccessMessage: public BaseMessage<MessageType_HttpRequestSuccess> | |
46 { | |
47 const std::string& Uri; | |
48 const void* Answer; | |
49 size_t AnswerSize; | |
50 Orthanc::IDynamicObject* Payload; | |
51 NewHttpRequestSuccessMessage(const std::string& uri, | |
52 const void* answer, | |
53 size_t answerSize, | |
54 Orthanc::IDynamicObject* payload) | |
55 : BaseMessage(), | |
56 Uri(uri), | |
57 Answer(answer), | |
58 AnswerSize(answerSize), | |
59 Payload(payload) | |
60 {} | |
61 }; | |
62 | |
63 struct NewHttpRequestErrorMessage: public BaseMessage<MessageType_HttpRequestError> | |
64 { | |
65 const std::string& Uri; | |
66 Orthanc::IDynamicObject* Payload; | |
67 NewHttpRequestErrorMessage(const std::string& uri, | |
68 Orthanc::IDynamicObject* payload) | |
69 : BaseMessage(), | |
70 Uri(uri), | |
71 Payload(payload) | |
72 {} | |
73 }; | |
74 | |
42 | 75 |
43 class ICallback : public IObserver | 76 class ICallback : public IObserver |
44 { | 77 { |
45 public: | 78 public: |
46 struct HttpRequestSuccessMessage: public IMessage | 79 struct HttpRequestSuccessMessage: public IMessage |
74 }; | 107 }; |
75 | 108 |
76 ICallback(MessageBroker& broker) | 109 ICallback(MessageBroker& broker) |
77 : IObserver(broker) | 110 : IObserver(broker) |
78 { | 111 { |
79 DeclareHandledMessage(MessageType_HttpRequestError); | 112 // DeclareHandledMessage(MessageType_HttpRequestError); |
80 DeclareHandledMessage(MessageType_HttpRequestSuccess); | 113 // DeclareHandledMessage(MessageType_HttpRequestSuccess); |
81 } | 114 } |
82 virtual ~ICallback() | 115 virtual ~ICallback() |
83 { | 116 { |
84 } | 117 } |
85 | 118 |
127 virtual void ScheduleGetRequest(ICallback& callback, | 160 virtual void ScheduleGetRequest(ICallback& callback, |
128 const std::string& uri, | 161 const std::string& uri, |
129 const Headers& headers, | 162 const Headers& headers, |
130 Orthanc::IDynamicObject* payload) = 0; | 163 Orthanc::IDynamicObject* payload) = 0; |
131 | 164 |
165 virtual void GetAsync(const std::string& uri, | |
166 const Headers& headers, | |
167 Orthanc::IDynamicObject* payload, | |
168 MessageHandler<IWebService::NewHttpRequestSuccessMessage>* successCallback, | |
169 MessageHandler<IWebService::NewHttpRequestErrorMessage>* failureCallback) = 0; | |
170 | |
171 | |
132 virtual void SchedulePostRequest(ICallback& callback, | 172 virtual void SchedulePostRequest(ICallback& callback, |
133 const std::string& uri, | 173 const std::string& uri, |
134 const Headers& headers, | 174 const Headers& headers, |
135 const std::string& body, | 175 const std::string& body, |
136 Orthanc::IDynamicObject* payload) = 0; | 176 Orthanc::IDynamicObject* payload) = 0; |