Mercurial > hg > orthanc-stone
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 } |