MCPcopy Create free account
hub / github.com/axmolengine/axmol / onRequestComplete

Method onRequestComplete

core/network/HttpClient-wasm.cpp:243–292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

241 }
242
243 void HttpClient::onRequestComplete(emscripten_fetch_t *fetch)
244 {
245 fetchUserData *userData = reinterpret_cast<fetchUserData *>(fetch->userData);
246 RefPtr<HttpResponse> response{ReferencedObject<HttpResponse>(userData->response)};
247 HttpRequest *request = response->getHttpRequest();
248
249 // get response
250 response->setResponseCode(fetch->status);
251 // response->setErrorBuffer(fetch->statusText);
252 response->getResponseData()->assign(reinterpret_cast<const char *>(fetch->data), reinterpret_cast<const char *>(fetch->data) + fetch->numBytes);
253 emscripten_fetch_close(fetch);
254
255 // write cookie back
256 auto cookieFilename = HttpClient::getInstance()->getCookieFilename();
257 if (!cookieFilename.empty())
258 {
259 EM_ASM_ARGS({
260 FS.writeFile(UTF8ToString($0), document.cookie);
261 }, cookieFilename.data());
262 }
263
264 const auto isAlone = userData->isAlone;
265 delete userData;
266
267 if (_httpClient)
268 {
269 // call back
270 const ccHttpRequestCallback &callback = request->getCallback();
271 if (callback)
272 callback(_httpClient, response);
273 response.reset();
274
275 // call next request
276 if (!isAlone)
277 {
278 auto& requestQueue = _httpClient->_requestQueue;
279 if (!requestQueue.empty())
280 {
281 HttpRequest *nextRequest = requestQueue.at(0);
282 HttpResponse *nextResp = new (std::nothrow) HttpResponse(nextRequest);
283 requestQueue.erase(0);
284 _httpClient->processResponse(nextResp, false);
285 }
286 else
287 {
288 _httpClient->decreaseThreadCountAndMayDeleteThis();
289 }
290 }
291 }
292 }
293
294 void HttpClient::clearResponseAndRequestQueue()
295 {

Callers

nothing calls this directly

Calls 12

getInstanceFunction · 0.85
getHttpRequestMethod · 0.80
writeFileMethod · 0.80
assignMethod · 0.45
getCookieFilenameMethod · 0.45
emptyMethod · 0.45
dataMethod · 0.45
resetMethod · 0.45
atMethod · 0.45
eraseMethod · 0.45
processResponseMethod · 0.45

Tested by

no test coverage detected