comparison Framework/Toolbox/IWebService.h @ 269:0dfa83535cd7 am-2

indentation
author am@osimis.io
date Wed, 22 Aug 2018 15:22:33 +0200
parents 5bd4161bf11b
children 8c8da145fefa
comparison
equal deleted inserted replaced
268:5bd4161bf11b 269:0dfa83535cd7
26 #include <string> 26 #include <string>
27 #include <Core/Logging.h> 27 #include <Core/Logging.h>
28 28
29 namespace OrthancStone 29 namespace OrthancStone
30 { 30 {
31 class IWebService 31 class IWebService
32 {
33 protected:
34 MessageBroker& broker_;
35 public:
36 typedef std::map<std::string, std::string> Headers;
37
38 class ICallback : public IObserver
32 { 39 {
33 protected:
34 MessageBroker& broker_;
35 public: 40 public:
36 typedef std::map<std::string, std::string> Headers; 41 struct HttpRequestSuccessMessage: public IMessage
42 {
43 const std::string& Uri;
44 const void* Answer;
45 size_t AnswerSize;
46 Orthanc::IDynamicObject* Payload;
47 HttpRequestSuccessMessage(const std::string& uri,
48 const void* answer,
49 size_t answerSize,
50 Orthanc::IDynamicObject* payload)
51 : IMessage(MessageType_HttpRequestSuccess),
52 Uri(uri),
53 Answer(answer),
54 AnswerSize(answerSize),
55 Payload(payload)
56 {}
57 };
37 58
38 class ICallback : public IObserver 59 struct HttpRequestErrorMessage: public IMessage
60 {
61 const std::string& Uri;
62 Orthanc::IDynamicObject* Payload;
63 HttpRequestErrorMessage(const std::string& uri,
64 Orthanc::IDynamicObject* payload)
65 : IMessage(MessageType_HttpRequestError),
66 Uri(uri),
67 Payload(payload)
68 {}
69 };
70
71 ICallback(MessageBroker& broker)
72 : IObserver(broker)
73 {
74 DeclareHandledMessage(MessageType_HttpRequestError);
75 DeclareHandledMessage(MessageType_HttpRequestSuccess);
76 }
77 virtual ~ICallback()
78 {
79 }
80
81 virtual void HandleMessage(IObservable& from, const IMessage& message)
82 {
83 switch(message.GetType())
39 { 84 {
40 public: 85 case MessageType_HttpRequestError:
41 struct HttpRequestSuccessMessage: public IMessage 86 {
42 { 87 const HttpRequestErrorMessage& msg = dynamic_cast<const HttpRequestErrorMessage&>(message);
43 const std::string& Uri; 88 OnHttpRequestError(msg.Uri,
44 const void* Answer; 89 msg.Payload);
45 size_t AnswerSize; 90 }; break;
46 Orthanc::IDynamicObject* Payload;
47 HttpRequestSuccessMessage(const std::string& uri,
48 const void* answer,
49 size_t answerSize,
50 Orthanc::IDynamicObject* payload)
51 : IMessage(MessageType_HttpRequestSuccess),
52 Uri(uri),
53 Answer(answer),
54 AnswerSize(answerSize),
55 Payload(payload)
56 {}
57 };
58 91
59 struct HttpRequestErrorMessage: public IMessage 92 case MessageType_HttpRequestSuccess:
60 { 93 {
61 const std::string& Uri; 94 const HttpRequestSuccessMessage& msg = dynamic_cast<const HttpRequestSuccessMessage&>(message);
62 Orthanc::IDynamicObject* Payload; 95 OnHttpRequestSuccess(msg.Uri,
63 HttpRequestErrorMessage(const std::string& uri, 96 msg.Answer,
64 Orthanc::IDynamicObject* payload) 97 msg.AnswerSize,
65 : IMessage(MessageType_HttpRequestError), 98 msg.Payload);
66 Uri(uri), 99 }; break;
67 Payload(payload) 100 default:
68 {} 101 VLOG("unhandled message type" << message.GetType());
69 }; 102 }
103 }
70 104
71 ICallback(MessageBroker& broker) 105 virtual void OnHttpRequestError(const std::string& uri,
72 : IObserver(broker) 106 Orthanc::IDynamicObject* payload) = 0;
73 {
74 DeclareHandledMessage(MessageType_HttpRequestError);
75 DeclareHandledMessage(MessageType_HttpRequestSuccess);
76 }
77 virtual ~ICallback()
78 {
79 }
80 107
81 virtual void HandleMessage(IObservable& from, const IMessage& message) 108 virtual void OnHttpRequestSuccess(const std::string& uri,
82 { 109 const void* answer,
83 switch(message.GetType()) 110 size_t answerSize,
84 { 111 Orthanc::IDynamicObject* payload) = 0;
85 case MessageType_HttpRequestError: 112 };
86 { const HttpRequestErrorMessage& msg = dynamic_cast<const HttpRequestErrorMessage&>(message);
87 OnHttpRequestError(msg.Uri,
88 msg.Payload);
89 }; break;
90 113
91 case MessageType_HttpRequestSuccess: 114 IWebService(MessageBroker& broker)
92 { 115 : broker_(broker)
93 const HttpRequestSuccessMessage& msg = dynamic_cast<const HttpRequestSuccessMessage&>(message); 116 {}
94 OnHttpRequestSuccess(msg.Uri,
95 msg.Answer,
96 msg.AnswerSize,
97 msg.Payload);
98 }; break;
99 default:
100 VLOG("unhandled message type" << message.GetType());
101 }
102 }
103 117
104 virtual void OnHttpRequestError(const std::string& uri, 118 virtual ~IWebService()
105 Orthanc::IDynamicObject* payload) = 0; 119 {
120 }
106 121
107 virtual void OnHttpRequestSuccess(const std::string& uri, 122 virtual void ScheduleGetRequest(ICallback& callback,
108 const void* answer, 123 const std::string& uri,
109 size_t answerSize, 124 const Headers& headers,
110 Orthanc::IDynamicObject* payload) = 0; 125 Orthanc::IDynamicObject* payload) = 0;
111 };
112 126
113 IWebService(MessageBroker& broker) 127 virtual void SchedulePostRequest(ICallback& callback,
114 : broker_(broker) 128 const std::string& uri,
115 {} 129 const Headers& headers,
116 130 const std::string& body,
117 virtual ~IWebService() 131 Orthanc::IDynamicObject* payload) = 0;
118 { 132 };
119 }
120
121 virtual void ScheduleGetRequest(ICallback& callback,
122 const std::string& uri,
123 const Headers& headers,
124 Orthanc::IDynamicObject* payload) = 0;
125
126 virtual void SchedulePostRequest(ICallback& callback,
127 const std::string& uri,
128 const Headers& headers,
129 const std::string& body,
130 Orthanc::IDynamicObject* payload) = 0;
131 };
132 } 133 }