Mercurial > hg > orthanc-stone
comparison Platforms/Wasm/WasmWebService.cpp @ 303:ed1a4302154f am-callable-and-promise
new messages in wasm too
author | am@osimis.io |
---|---|
date | Tue, 18 Sep 2018 18:17:26 +0200 |
parents | 3897f9f28cfa |
children | 14ef1227120f |
comparison
equal
deleted
inserted
replaced
302:4a79193ffb58 | 303:ed1a4302154f |
---|---|
5 | 5 |
6 #ifdef __cplusplus | 6 #ifdef __cplusplus |
7 extern "C" { | 7 extern "C" { |
8 #endif | 8 #endif |
9 | 9 |
10 extern void WasmWebService_ScheduleGetRequest(void* callback, | 10 extern void WasmWebService_GetAsync(void* callableSuccess, |
11 const char* uri, | 11 void* callableFailure, |
12 const char* headersInJsonString, | 12 const char* uri, |
13 void* payload); | 13 const char* headersInJsonString, |
14 void* payload); | |
14 | 15 |
15 extern void WasmWebService_NewScheduleGetRequest(void* callableSuccess, | 16 extern void WasmWebService_PostAsync(void* callableSuccess, |
16 void* callableFailure, | 17 void* callableFailure, |
17 const char* uri, | 18 const char* uri, |
18 const char* headersInJsonString, | 19 const char* headersInJsonString, |
19 void* payload); | 20 const void* body, |
21 size_t bodySize, | |
22 void* payload); | |
20 | 23 |
21 extern void WasmWebService_SchedulePostRequest(void* callback, | |
22 const char* uri, | |
23 const char* headersInJsonString, | |
24 const void* body, | |
25 size_t bodySize, | |
26 void* payload); | |
27 | 24 |
28 void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifyError(void* callback, | 25 void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifyError(void* failureCallable, |
29 const char* uri, | |
30 void* payload) | |
31 { | |
32 if (callback == NULL) | |
33 { | |
34 throw; | |
35 } | |
36 else | |
37 { | |
38 reinterpret_cast<OrthancStone::IWebService::ICallback*>(callback)-> | |
39 OnHttpRequestError(uri, reinterpret_cast<Orthanc::IDynamicObject*>(payload)); | |
40 } | |
41 } | |
42 | |
43 void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifySuccess(void* callback, | |
44 const char* uri, | |
45 const void* body, | |
46 size_t bodySize, | |
47 void* payload) | |
48 { | |
49 if (callback == NULL) | |
50 { | |
51 throw; | |
52 } | |
53 else | |
54 { | |
55 reinterpret_cast<OrthancStone::IWebService::ICallback*>(callback)-> | |
56 OnHttpRequestSuccess(uri, body, bodySize, reinterpret_cast<Orthanc::IDynamicObject*>(payload)); | |
57 } | |
58 } | |
59 | |
60 void EMSCRIPTEN_KEEPALIVE WasmWebService_NewNotifyError(void* failureCallable, | |
61 const char* uri, | 26 const char* uri, |
62 void* payload) | 27 void* payload) |
63 { | 28 { |
64 if (failureCallable == NULL) | 29 if (failureCallable == NULL) |
65 { | 30 { |
66 throw; | 31 throw; |
67 } | 32 } |
68 else | 33 else |
69 { | 34 { |
70 reinterpret_cast<OrthancStone::MessageHandler<OrthancStone::IWebService::NewHttpRequestErrorMessage>*>(failureCallable)-> | 35 reinterpret_cast<OrthancStone::MessageHandler<OrthancStone::IWebService::HttpRequestErrorMessage>*>(failureCallable)-> |
71 Apply(OrthancStone::IWebService::NewHttpRequestErrorMessage(uri, reinterpret_cast<Orthanc::IDynamicObject*>(payload))); | 36 Apply(OrthancStone::IWebService::HttpRequestErrorMessage(uri, reinterpret_cast<Orthanc::IDynamicObject*>(payload))); |
72 } | 37 } |
73 } | 38 } |
74 | 39 |
75 void EMSCRIPTEN_KEEPALIVE WasmWebService_NewNotifySuccess(void* successCallable, | 40 void EMSCRIPTEN_KEEPALIVE WasmWebService_NotifySuccess(void* successCallable, |
76 const char* uri, | 41 const char* uri, |
77 const void* body, | 42 const void* body, |
78 size_t bodySize, | 43 size_t bodySize, |
79 void* payload) | 44 void* payload) |
80 { | 45 { |
82 { | 47 { |
83 throw; | 48 throw; |
84 } | 49 } |
85 else | 50 else |
86 { | 51 { |
87 reinterpret_cast<OrthancStone::MessageHandler<OrthancStone::IWebService::NewHttpRequestSuccessMessage>*>(successCallable)-> | 52 reinterpret_cast<OrthancStone::MessageHandler<OrthancStone::IWebService::HttpRequestSuccessMessage>*>(successCallable)-> |
88 Apply(OrthancStone::IWebService::NewHttpRequestSuccessMessage(uri, body, bodySize, reinterpret_cast<Orthanc::IDynamicObject*>(payload))); | 53 Apply(OrthancStone::IWebService::HttpRequestSuccessMessage(uri, body, bodySize, reinterpret_cast<Orthanc::IDynamicObject*>(payload))); |
89 } | 54 } |
90 } | 55 } |
91 | 56 |
92 void EMSCRIPTEN_KEEPALIVE WasmWebService_SetBaseUri(const char* baseUri) | 57 void EMSCRIPTEN_KEEPALIVE WasmWebService_SetBaseUri(const char* baseUri) |
93 { | 58 { |
132 | 97 |
133 writer->write(jsonHeaders, &outputStr); | 98 writer->write(jsonHeaders, &outputStr); |
134 output = outputStr.str(); | 99 output = outputStr.str(); |
135 } | 100 } |
136 | 101 |
137 void WasmWebService::ScheduleGetRequest(ICallback& callback, | 102 void WasmWebService::PostAsync(const std::string& relativeUri, |
138 const std::string& relativeUri, | 103 const Headers& headers, |
139 const Headers& headers, | 104 const std::string& body, |
140 Orthanc::IDynamicObject* payload) | 105 Orthanc::IDynamicObject* payload, |
106 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallable, | |
107 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallable) | |
141 { | 108 { |
142 std::string uri = baseUri_ + relativeUri; | 109 std::string uri = baseUri_ + relativeUri; |
143 std::string headersInJsonString; | 110 std::string headersInJsonString; |
144 ToJsonString(headersInJsonString, headers); | 111 ToJsonString(headersInJsonString, headers); |
145 WasmWebService_ScheduleGetRequest(&callback, uri.c_str(), headersInJsonString.c_str(), payload); | 112 WasmWebService_PostAsync(successCallable, failureCallable, uri.c_str(), headersInJsonString.c_str(), |
146 } | |
147 | |
148 void WasmWebService::SchedulePostRequest(ICallback& callback, | |
149 const std::string& relativeUri, | |
150 const Headers& headers, | |
151 const std::string& body, | |
152 Orthanc::IDynamicObject* payload) | |
153 { | |
154 std::string uri = baseUri_ + relativeUri; | |
155 std::string headersInJsonString; | |
156 ToJsonString(headersInJsonString, headers); | |
157 WasmWebService_SchedulePostRequest(&callback, uri.c_str(), headersInJsonString.c_str(), | |
158 body.c_str(), body.size(), payload); | 113 body.c_str(), body.size(), payload); |
159 } | 114 } |
160 | 115 |
161 void WasmWebService::GetAsync(const std::string& relativeUri, | 116 void WasmWebService::GetAsync(const std::string& relativeUri, |
162 const Headers& headers, | 117 const Headers& headers, |
163 Orthanc::IDynamicObject* payload, | 118 Orthanc::IDynamicObject* payload, |
164 MessageHandler<IWebService::NewHttpRequestSuccessMessage>* successCallable, | 119 MessageHandler<IWebService::HttpRequestSuccessMessage>* successCallable, |
165 MessageHandler<IWebService::NewHttpRequestErrorMessage>* failureCallable) | 120 MessageHandler<IWebService::HttpRequestErrorMessage>* failureCallable) |
166 { | 121 { |
167 std::string uri = baseUri_ + relativeUri; | 122 std::string uri = baseUri_ + relativeUri; |
168 std::string headersInJsonString; | 123 std::string headersInJsonString; |
169 ToJsonString(headersInJsonString, headers); | 124 ToJsonString(headersInJsonString, headers); |
170 WasmWebService_NewScheduleGetRequest(successCallable, failureCallable, uri.c_str(), headersInJsonString.c_str(), payload); | 125 WasmWebService_GetAsync(successCallable, failureCallable, uri.c_str(), headersInJsonString.c_str(), payload); |
171 } | 126 } |
172 | 127 |
173 } | 128 } |