MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / closeAsync

Method closeAsync

Libraries/Http/HttpAsyncServer.cpp:360–432  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

358 client.getReadableTransportStream().resumeReading();
359
360 // Re-register for next request headers
361 EventDataListener dataListener{pself, client};
362 SC_HTTP_ASSERT_RELEASE(client.getReadableTransportStream().eventData.addListener(dataListener));
363 EventEndListener endListener{pself, client};
364 SC_HTTP_ASSERT_RELEASE(client.getReadableTransportStream().eventEnd.addListener(endListener));
365 }
366 else
367 {
368 pself.closeAsync(client);
369 }
370 }
371 };
372 SC_HTTP_ASSERT_RELEASE(client.response.getWritableStream().eventFinish.addListener(AfterWrite{*this, client}));
373
374 if (client.request.getBodyFramingKind() == HttpBodyFramingKind::None)
375 {
376 client.getReadableTransportStream().pause();
377 }
378 else if (client.request.getBodyFramingKind() == HttpBodyFramingKind::Chunked or
379 client.request.getBodyFramingKind() == HttpBodyFramingKind::ContentLength)
380 {
381 SC_HTTP_TRUST_RESULT(client.request.startBodyStream());
382 }
383 }
384}
385
386void HttpAsyncServer::onRequestBodyData(HttpConnection& client, AsyncBufferView::ID bufferID)
387{
388 Span<const char> readData;
389 Result readable = client.buffersPool.getReadableData(bufferID, readData);
390 if (not readable)
391 {
392 if (onError.isValid())
393 {
394 onError(readable);
395 }
396 closeAsync(client);
397 return;
398 }
399
400 Result process = client.request.processBodyData(client.getReadableTransportStream(), bufferID, readData, true);
401 if (not process)
402 {
403 if (onError.isValid())
404 {
405 onError(process);
406 }
407 closeAsync(client);
408 return;
409 }
410
411 if (client.request.isBodyComplete())
412 {
413 const bool removed =
414 client.getReadableTransportStream().eventData.removeListener(EventBodyDataListener{*this, client});
415 (void)(removed);
416 client.getReadableTransportStream().pause();
417 }

Callers 3

operator()Method · 0.45
operator()Method · 0.45
operator()Method · 0.45

Calls 1

destroyMethod · 0.45

Tested by

no test coverage detected