Home / Function/ handleWritableStreams() — netty Function Reference

handleWritableStreams() — netty Function Reference

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

Function java Buffer Allocators calls 2 called by 2

Entity Profile

Dependency Diagram

graph TD
  800fad5b_da38_9e46_d584_579345b38410["handleWritableStreams()"]
  3c534d05_bb5b_c991_5e03_7ec94e739cf7["QuicheQuicChannel"]
  800fad5b_da38_9e46_d584_579345b38410 -->|defined in| 3c534d05_bb5b_c991_5e03_7ec94e739cf7
  94df982c_642b_1c3b_8e52_0291be3430e7["writable()"]
  94df982c_642b_1c3b_8e52_0291be3430e7 -->|calls| 800fad5b_da38_9e46_d584_579345b38410
  4cae79d3_92ee_29bb_03d0_6a120cc97031["processReceived()"]
  4cae79d3_92ee_29bb_03d0_6a120cc97031 -->|calls| 800fad5b_da38_9e46_d584_579345b38410
  94df982c_642b_1c3b_8e52_0291be3430e7["writable()"]
  800fad5b_da38_9e46_d584_579345b38410 -->|calls| 94df982c_642b_1c3b_8e52_0291be3430e7
  91ad4e75_1871_05d1_0e83_42ab72e107e6["growIfNeeded()"]
  800fad5b_da38_9e46_d584_579345b38410 -->|calls| 91ad4e75_1871_05d1_0e83_42ab72e107e6
  style 800fad5b_da38_9e46_d584_579345b38410 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicChannel.java lines 1078–1124

    private boolean handleWritableStreams(QuicheQuicConnection conn) {
        if (conn.isFreed()) {
            return false;
        }
        reantranceGuard |= IN_HANDLE_WRITABLE_STREAMS;
        try {
            long connAddr = conn.address();
            boolean mayNeedWrite = false;

            if (Quiche.quiche_conn_is_established(connAddr) ||
                    Quiche.quiche_conn_is_in_early_data(connAddr)) {
                long writableIterator = Quiche.quiche_conn_writable(connAddr);

                int totalWritable = 0;
                try {
                    // For streams we always process all streams when at least on read was requested.
                    for (;;) {
                        int writable = Quiche.quiche_stream_iter_next(
                                writableIterator, writableStreams);
                        for (int i = 0; i < writable; i++) {
                            long streamId = writableStreams[i];
                            QuicheQuicStreamChannel streamChannel = streams.get(streamId);
                            if (streamChannel != null) {
                                long capacity = Quiche.quiche_conn_stream_capacity(connAddr, streamId);
                                if (streamChannel.writable(capacity)) {
                                    mayNeedWrite = true;
                                }
                            }
                        }
                        if (writable > 0) {
                            totalWritable += writable;
                        }
                        if (writable < writableStreams.length) {
                            // We did handle all writable streams.
                            break;
                        }
                    }
                } finally {
                    Quiche.quiche_stream_iter_free(writableIterator);
                }
                writableStreams = growIfNeeded(writableStreams, totalWritable);
            }
            return mayNeedWrite;
        } finally {
            reantranceGuard &= ~IN_HANDLE_WRITABLE_STREAMS;
        }
    }

Domain

Subdomains

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free