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

Method onStreamReceive

Libraries/Http/HttpAsyncServer.cpp:197–324  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

195 // Only reactivate asyncAccept if there are available clients (otherwise it's being reactivated in closeAsync)
196 result.reactivateRequest(connections.getNumActiveConnections() < connections.getNumTotalConnections());
197}
198
199Result HttpAsyncServer::beginHttpConnection(HttpConnection& client)
200{
201 client.response.setWritableStream(client.getWritableTransportStream());
202
203 EventDataListener dataListener{*this, client};
204 SC_TRY_MSG(client.getReadableTransportStream().eventData.addListener(dataListener),
205 "HttpAsyncServer readable data listener unavailable");
206 if (client.getReadableTransportStream().canStart())
207 {
208 SC_TRY(client.getReadableTransportStream().start());
209 }
210 else
211 {
212 client.getReadableTransportStream().resumeReading();
213 }
214 return Result(true);
215}
216
217Result HttpAsyncServer::beginTransportConnection(HttpConnection& client)
218{
219 if (not transportSetup.isValid())
220 {
221 return beginHttpConnection(client);
222 }
223
224 HttpAsyncServerTransportSetup setup;
225 setup.connection = &client;
226 setup.eventLoop = eventLoop;
227 setup.complete = {[this, &client](Result result) { onTransportSetupComplete(client, result); }};
228 return transportSetup(setup);
229}
230
231void HttpAsyncServer::onTransportSetupComplete(HttpConnection& client, Result result)
232{
233 if (not result)
234 {
235 if (onError.isValid())
236 {
237 onError(result);
238 }
239 closeAsync(client);
240 return;
241 }
242
243 Result setup = beginHttpConnection(client);
244 if (not setup)
245 {
246 if (onError.isValid())
247 {
248 onError(setup);
249 }
250 closeAsync(client);
251 }
252}
253
254void HttpAsyncServer::onStreamReceive(HttpConnection& client, AsyncBufferView::ID bufferID)

Callers 1

operator()Method · 0.80

Calls 11

onErrorFunction · 0.85
getWritableDataMethod · 0.80
writeHeadersMethod · 0.80
prepareBodyStreamMethod · 0.80
resumeReadingMethod · 0.80
pauseMethod · 0.80
startBodyStreamMethod · 0.80
ResultClass · 0.50
isValidMethod · 0.45
resetMethod · 0.45

Tested by

no test coverage detected