Mercurial > hg > orthanc-stone
annotate Framework/Toolbox/IWebService.h @ 275:58e23e0dd86a am-2
renaming
author | am@osimis.io |
---|---|
date | Fri, 24 Aug 2018 13:58:06 +0200 |
parents | 0dfa83535cd7 |
children | 8c8da145fefa |
rev | line source |
---|---|
57 | 1 /** |
2 * Stone of Orthanc | |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
4 * Department, University Hospital of Liege, Belgium | |
135
e2fe9352f240
upgrade to year 2018
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
113
diff
changeset
|
5 * Copyright (C) 2017-2018 Osimis S.A., Belgium |
57 | 6 * |
7 * This program is free software: you can redistribute it and/or | |
8 * modify it under the terms of the GNU Affero General Public License | |
9 * as published by the Free Software Foundation, either version 3 of | |
10 * the License, or (at your option) any later version. | |
11 * | |
12 * This program is distributed in the hope that it will be useful, but | |
13 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Affero General Public License for more details. | |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
16 * |
57 | 17 * You should have received a copy of the GNU Affero General Public License |
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 **/ | |
20 | |
21 | |
22 #pragma once | |
23 | |
212
5412adf19980
resort to OrthancFramework
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
201
diff
changeset
|
24 #include <Core/IDynamicObject.h> |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
25 #include "../../Framework/Messages/IObserver.h" |
57 | 26 #include <string> |
252 | 27 #include <Core/Logging.h> |
57 | 28 |
29 namespace OrthancStone | |
30 { | |
269 | 31 class IWebService |
32 { | |
33 protected: | |
34 MessageBroker& broker_; | |
35 public: | |
36 typedef std::map<std::string, std::string> Headers; | |
257 | 37 |
269 | 38 class ICallback : public IObserver |
39 { | |
40 public: | |
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 }; | |
57 | 58 |
269 | 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 }; | |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
70 |
269 | 71 ICallback(MessageBroker& broker) |
72 : IObserver(broker) | |
73 { | |
74 DeclareHandledMessage(MessageType_HttpRequestError); | |
75 DeclareHandledMessage(MessageType_HttpRequestSuccess); | |
76 } | |
77 virtual ~ICallback() | |
78 { | |
79 } | |
57 | 80 |
269 | 81 virtual void HandleMessage(IObservable& from, const IMessage& message) |
82 { | |
83 switch(message.GetType()) | |
84 { | |
85 case MessageType_HttpRequestError: | |
86 { | |
87 const HttpRequestErrorMessage& msg = dynamic_cast<const HttpRequestErrorMessage&>(message); | |
88 OnHttpRequestError(msg.Uri, | |
89 msg.Payload); | |
90 }; break; | |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
91 |
269 | 92 case MessageType_HttpRequestSuccess: |
93 { | |
94 const HttpRequestSuccessMessage& msg = dynamic_cast<const HttpRequestSuccessMessage&>(message); | |
95 OnHttpRequestSuccess(msg.Uri, | |
96 msg.Answer, | |
97 msg.AnswerSize, | |
98 msg.Payload); | |
99 }; break; | |
100 default: | |
101 VLOG("unhandled message type" << message.GetType()); | |
102 } | |
103 } | |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
104 |
269 | 105 virtual void OnHttpRequestError(const std::string& uri, |
106 Orthanc::IDynamicObject* payload) = 0; | |
57 | 107 |
269 | 108 virtual void OnHttpRequestSuccess(const std::string& uri, |
109 const void* answer, | |
110 size_t answerSize, | |
111 Orthanc::IDynamicObject* payload) = 0; | |
112 }; | |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
113 |
269 | 114 IWebService(MessageBroker& broker) |
115 : broker_(broker) | |
116 {} | |
57 | 117 |
269 | 118 virtual ~IWebService() |
119 { | |
120 } | |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
121 |
269 | 122 virtual void ScheduleGetRequest(ICallback& callback, |
123 const std::string& uri, | |
124 const Headers& headers, | |
125 Orthanc::IDynamicObject* payload) = 0; | |
251
192e6e349e69
first usage of new message system (in SDL only)
am@osimis.io
parents:
212
diff
changeset
|
126 |
269 | 127 virtual void SchedulePostRequest(ICallback& callback, |
128 const std::string& uri, | |
129 const Headers& headers, | |
130 const std::string& body, | |
131 Orthanc::IDynamicObject* payload) = 0; | |
132 }; | |
57 | 133 } |