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;