Home / Class/ QuicheQuicStreamChannel Class — netty Architecture

QuicheQuicStreamChannel Class — netty Architecture

Architecture documentation for the QuicheQuicStreamChannel class in QuicheQuicStreamChannel.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  12c209e0_2392_3384_a39f_2a0649fbd28b["QuicheQuicStreamChannel"]
  39ad0588_a62e_d5d4_0789_23d511692643["QuicheQuicStreamChannel.java"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|defined in| 39ad0588_a62e_d5d4_0789_23d511692643
  a89cb236_d724_f3d9_e346_aa10d47e6ff8["QuicheQuicStreamChannel()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| a89cb236_d724_f3d9_e346_aa10d47e6ff8
  ac5c7155_5302_1638_cfd4_6e0cbc66342a["QuicStreamAddress()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| ac5c7155_5302_1638_cfd4_6e0cbc66342a
  a249dbfa_942d_d16e_c8eb_e99a04ab68ce["isLocalCreated()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| a249dbfa_942d_d16e_c8eb_e99a04ab68ce
  1ddc4e81_9800_5d64_559d_1fcefda11b5e["QuicStreamType()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| 1ddc4e81_9800_5d64_559d_1fcefda11b5e
  d46e3d31_9ac9_1dec_c60f_c3c77a46395a["streamId()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| d46e3d31_9ac9_1dec_c60f_c3c77a46395a
  bb303f0c_3fda_b39d_e4f6_2218258ad766["QuicStreamPriority()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| bb303f0c_3fda_b39d_e4f6_2218258ad766
  e0d43b2d_1676_72b5_396d_ed0a9a98c114["ChannelFuture()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| e0d43b2d_1676_72b5_396d_ed0a9a98c114
  3b873a53_82c8_e713_2047_ad0e7a8552a1["updatePriority0()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| 3b873a53_82c8_e713_2047_ad0e7a8552a1
  e3e597ec_fd99_048c_67d7_d7f7fe896ec6["isInputShutdown()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| e3e597ec_fd99_048c_67d7_d7f7fe896ec6
  1bfd22cf_ed33_9f74_5cb7_ed0890bb6f50["shutdownOutput0()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| 1bfd22cf_ed33_9f74_5cb7_ed0890bb6f50
  f3684435_8d40_ee02_e5ae_457ef781b213["QuicheQuicChannel()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| f3684435_8d40_ee02_e5ae_457ef781b213
  cd8a53eb_7dc1_31ac_4939_0f5c40d1fe33["shutdownInput0()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| cd8a53eb_7dc1_31ac_4939_0f5c40d1fe33
  0ff18cbf_91de_7810_6928_fb39a5e82937["isOutputShutdown()"]
  12c209e0_2392_3384_a39f_2a0649fbd28b -->|method| 0ff18cbf_91de_7810_6928_fb39a5e82937

Relationship Graph

Source Code

codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java lines 52–1058

final class QuicheQuicStreamChannel extends DefaultAttributeMap implements QuicStreamChannel {
    private static final ChannelMetadata METADATA = new ChannelMetadata(false, 16);
    private static final InternalLogger LOGGER = InternalLoggerFactory.getInstance(QuicheQuicStreamChannel.class);
    private final QuicheQuicChannel parent;
    private final ChannelId id;
    private final ChannelPipeline pipeline;
    private final QuicStreamChannelUnsafe unsafe;
    private final ChannelPromise closePromise;
    private final PendingWriteQueue queue;

    private final QuicStreamChannelConfig config;
    private final QuicStreamAddress address;

    private boolean readable;
    private boolean readPending;
    private boolean inRecv;
    private boolean inWriteQueued;
    private boolean finReceived;
    private boolean finSent;

    private volatile boolean registered;
    private volatile boolean writable = true;
    private volatile boolean active = true;
    private volatile boolean inputShutdown;
    private volatile boolean outputShutdown;
    private volatile QuicStreamPriority priority;
    private volatile long capacity;

    QuicheQuicStreamChannel(QuicheQuicChannel parent, long streamId) {
        this.parent = parent;
        this.id = DefaultChannelId.newInstance();
        unsafe = new QuicStreamChannelUnsafe();
        this.pipeline = new DefaultChannelPipeline(this) {
            // TODO: add some overrides maybe ?
        };
        config = new QuicheQuicStreamChannelConfig(this);
        this.address = new QuicStreamAddress(streamId);
        this.closePromise = newPromise();
        queue = new PendingWriteQueue(this);
        // Local created unidirectional streams have the input shutdown by spec. There will never be any data for
        // these to be read.
        if (parent.streamType(streamId) == QuicStreamType.UNIDIRECTIONAL && parent.isStreamLocalCreated(streamId)) {
            inputShutdown = true;
        }
    }

    @Override
    public QuicStreamAddress localAddress() {
        return address;
    }

    @Override
    public QuicStreamAddress remoteAddress() {
        return address;
    }

    @Override
    public boolean isLocalCreated() {
        return parent().isStreamLocalCreated(streamId());
    }

    @Override
    public QuicStreamType type() {
        return parent().streamType(streamId());
    }

    @Override
    public long streamId() {
        return address.streamId();
    }

    @Override
    public QuicStreamPriority priority() {
        return priority;
    }

    @Override
    public ChannelFuture updatePriority(QuicStreamPriority priority, ChannelPromise promise) {
        if (eventLoop().inEventLoop()) {
            updatePriority0(priority, promise);
        } else {

Frequently Asked Questions

What is the QuicheQuicStreamChannel class?
QuicheQuicStreamChannel is a class in the netty codebase, defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java.
Where is QuicheQuicStreamChannel defined?
QuicheQuicStreamChannel is defined in codec-classes-quic/src/main/java/io/netty/handler/codec/quic/QuicheQuicStreamChannel.java at line 52.

Analyze Your Own Codebase

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

Try Supermodel Free