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

Class AfterWrite

Libraries/Http/HttpAsyncServer.cpp:268–311  ·  view source on GitHub ↗

Register before starting the body stream, which can synchronously emit buffered body data.

Source from the content-addressed store, hash-verified

266 }
267 closeAsync(client);
268 return;
269 }
270 else if (client.request.hasReceivedHeaders())
271 {
272 client.response.grabUnusedHeaderMemory(client.request);
273 client.response.reset();
274
275 // Both with and without body we should stop listening to data events
276 SC_HTTP_ASSERT_RELEASE(
277 client.getReadableTransportStream().eventData.removeListener(EventDataListener{*this, client}));
278 if (client.requestCount > 0)
279 {
280 SC_HTTP_ASSERT_RELEASE(
281 client.getReadableTransportStream().eventEnd.removeListener(EventEndListener{*this, client}));
282 }
283 Result prepareBody =
284 client.request.prepareBodyStream(client.buffersPool,
285 {[&client]() -> Result
286 {
287 if (not client.request.isBodyComplete())
288 {
289 client.getReadableTransportStream().resumeReading();
290 }
291 return Result(true);
292 }},
293 false);
294 if (not prepareBody)
295 {
296 if (onError.isValid())
297 {
298 onError(prepareBody);
299 }
300 closeAsync(client);
301 return;
302 }
303
304 if (client.request.getBodyFramingKind() == HttpBodyFramingKind::Chunked or
305 client.request.getBodyFramingKind() == HttpBodyFramingKind::ContentLength)
306 {
307 const bool addedBodyData =
308 client.getReadableTransportStream().eventData.addListener(EventBodyDataListener{*this, client});
309 SC_HTTP_ASSERT_RELEASE(addedBodyData);
310 }
311
312 onRequest(client);
313
314 if (client.isWebSocketUpgraded())

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected