Home / Function/ recvStream() — netty Function Reference

recvStream() — netty Function Reference

Architecture documentation for the recvStream() function in QuicheQuicChannel.java from the netty codebase.

Function java Buffer Allocators calls 1 called by 2

Entity Profile

Dependency Diagram

graph TD
  4c5c4c1a_01ba_f361_2baa_f00270cfb942["recvStream()"]
  981bac79_4fa5_9e57_50c8_e12d0b35f6d4["QuicChannelUnsafe"]
  4c5c4c1a_01ba_f361_2baa_f00270cfb942 -->|defined in| 981bac79_4fa5_9e57_50c8_e12d0b35f6d4
  4cae79d3_92ee_29bb_03d0_6a120cc97031["processReceived()"]
  4cae79d3_92ee_29bb_03d0_6a120cc97031 -->|calls| 4c5c4c1a_01ba_f361_2baa_f00270cfb942
  0e1ca299_ed3d_8a6d_bf55_50ab173c29d7["recv()"]
  0e1ca299_ed3d_8a6d_bf55_50ab173c29d7 -->|calls| 4c5c4c1a_01ba_f361_2baa_f00270cfb942
  91ad4e75_1871_05d1_0e83_42ab72e107e6["growIfNeeded()"]
  4c5c4c1a_01ba_f361_2baa_f00270cfb942 -->|calls| 91ad4e75_1871_05d1_0e83_42ab72e107e6
  style 4c5c4c1a_01ba_f361_2baa_f00270cfb942 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java lines 1823–1865

        private void recvStream(QuicheQuicConnection conn) {
            if (conn.isFreed()) {
                return;
            }
            long connAddr = conn.address();
            long readableIterator = Quiche.quiche_conn_readable(connAddr);
            int totalReadable = 0;
            if (readableIterator != -1) {
                try {
                    // For streams we always process all streams when at least on read was requested.
                    if (recvStreamPending && streamReadable) {
                        for (;;) {
                            int readable = Quiche.quiche_stream_iter_next(
                                    readableIterator, readableStreams);
                            for (int i = 0; i < readable; i++) {
                                long streamId = readableStreams[i];
                                QuicheQuicStreamChannel streamChannel = streams.get(streamId);
                                if (streamChannel == null) {
                                    recvStreamPending = false;
                                    fireChannelReadCompletePending = true;
                                    streamChannel = addNewStreamChannel(streamId);
                                    streamChannel.readable();
                                    pipeline().fireChannelRead(streamChannel);
                                } else {
                                    streamChannel.readable();
                                }
                            }
                            if (readable < readableStreams.length) {
                                // We did consume all readable streams.
                                streamReadable = false;
                                break;
                            }
                            if (readable > 0) {
                                totalReadable += readable;
                            }
                        }
                    }
                } finally {
                    Quiche.quiche_stream_iter_free(readableIterator);
                }
                readableStreams = growIfNeeded(readableStreams, totalReadable);
            }
        }

Domain

Subdomains

Frequently Asked Questions

What does recvStream() do?
recvStream() is a function in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java.
Where is recvStream() defined?
recvStream() is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java at line 1823.
What does recvStream() call?
recvStream() calls 1 function(s): growIfNeeded.
What calls recvStream()?
recvStream() is called by 2 function(s): processReceived, recv.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free