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

Method push

Libraries/AsyncStreams/AsyncStreams.cpp:371–418  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

369}
370
371bool AsyncReadableStream::push(AsyncBufferView::ID bufferID, size_t newSize)
372{
373 if (newSize == 0)
374 {
375 emitError(Result::Error("AsyncReadableStream::push zero sized buffer is not allowed"));
376 return false;
377 }
378 // Push buffer to the queue
379 buffers->setNewBufferSize(bufferID, newSize);
380 Request request;
381 request.bufferID = bufferID;
382 if (not readQueue.pushBack(request))
383 {
384 state = State::Errored;
385 emitError(Result::Error("AsyncReadableStream::push dropping buffer"));
386 return false;
387 }
388 buffers->refBuffer(bufferID); // 1a. unrefBuffer in emitOnData()
389
390 switch (state)
391 {
392 case State::SyncPushing:
393 case State::Reading: {
394 emitOnData();
395 state = State::SyncPushing;
396 }
397 break;
398 case State::AsyncPushing:
399 case State::AsyncReading: {
400 emitOnData();
401 if (state == State::AsyncReading)
402 {
403 state = State::AsyncPushing;
404 }
405 }
406 break;
407 case State::Pausing: {
408 // Process buffers received while Pausing is being propagated upstream
409 emitOnData();
410 }
411 break;
412 default: {
413 emitError(Result::Error("AsyncReadableStream::push - called in wrong state"));
414 }
415 break;
416 }
417 return state == State::AsyncPushing or state == State::SyncPushing;
418}
419
420Result AsyncReadableStream::unshift(AsyncBufferView::ID bufferID)
421{

Callers 13

joinPathFunction · 0.45
visitFunction · 0.45
validateDependencyOrderFunction · 0.45
writeGeneratedBannerFunction · 0.45
writeLibraryBlockFunction · 0.45
renderRegularHeaderFunction · 0.45
renderStandaloneHeaderFunction · 0.45
walkFunction · 0.45
listTreeFunction · 0.45
joinPathFunction · 0.45
onResponseBodyMethod · 0.45
afterReadMethod · 0.45

Calls 3

setNewBufferSizeMethod · 0.80
refBufferMethod · 0.80
ErrorEnum · 0.50

Tested by

no test coverage detected