MCPcopy Create free account
hub / github.com/awslabs/llrt / pull_steps

Method pull_steps

modules/llrt_stream_web/src/readable/default_controller.rs:775–816  ·  view source on GitHub ↗
(
        ctx: &Ctx<'js>,
        mut objects: ReadableStreamDefaultReaderObjects<'js, Self>,
        read_request: impl ReadableStreamReadRequest<'js> + 'js,
    )

Source from the content-addressed store, hash-verified

773 }
774
775 fn pull_steps(
776 ctx: &Ctx<'js>,
777 mut objects: ReadableStreamDefaultReaderObjects<'js, Self>,
778 read_request: impl ReadableStreamReadRequest<'js> + 'js,
779 ) -> Result<ReadableStreamDefaultReaderObjects<'js, Self>> {
780 // If this.[[queue]] is not empty,
781 if !objects.controller.container.queue.is_empty() {
782 // Let chunk be ! DequeueValue(this).
783 let chunk = objects.controller.container.dequeue_value();
784 // If this.[[closeRequested]] is true and this.[[queue]] is empty,
785 if objects.controller.close_requested && objects.controller.container.queue.is_empty() {
786 // Perform ! ReadableStreamDefaultControllerClearAlgorithms(this).
787 objects
788 .controller
789 .readable_stream_default_controller_clear_algorithms();
790 // Perform ! ReadableStreamClose(stream).
791 objects = ReadableStream::readable_stream_close(ctx.clone(), objects)?;
792 } else {
793 // Otherwise, perform ! ReadableStreamDefaultControllerCallPullIfNeeded(this).
794 objects =
795 ReadableStreamDefaultController::readable_stream_default_controller_call_pull_if_needed(
796 ctx.clone(),
797 objects,
798 )?;
799 }
800
801 // Perform readRequest’s chunk steps, given chunk.
802 read_request.chunk_steps_typed(objects, chunk)
803 } else {
804 // Otherwise,
805 // Perform ! ReadableStreamAddReadRequest(stream, readRequest).
806 objects
807 .stream
808 .readable_stream_add_read_request(&mut objects.reader, read_request);
809 // Perform ! ReadableStreamDefaultControllerCallPullIfNeeded(this).
810
811 ReadableStreamDefaultController::readable_stream_default_controller_call_pull_if_needed(
812 ctx.clone(),
813 objects,
814 )
815 }
816 }
817
818 fn cancel_steps<R: ReadableStreamReader<'js>>(
819 ctx: &Ctx<'js>,

Callers

nothing calls this directly

Calls 6

dequeue_valueMethod · 0.80
chunk_steps_typedMethod · 0.80
is_emptyMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected