Home / Class/ StreamHandler Class — netty Architecture

StreamHandler Class — netty Architecture

Architecture documentation for the StreamHandler class in QuicStreamHalfClosureTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  99c11204_2e4d_9976_0b17_a9fe4d4f4590["StreamHandler"]
  ca5f6d82_99cb_9d45_006a_7771dc542641["QuicStreamHalfClosureTest.java"]
  99c11204_2e4d_9976_0b17_a9fe4d4f4590 -->|defined in| ca5f6d82_99cb_9d45_006a_7771dc542641
  3fc3fa70_8536_354a_1f2d_888fffe8e6a8["channelRegistered()"]
  99c11204_2e4d_9976_0b17_a9fe4d4f4590 -->|method| 3fc3fa70_8536_354a_1f2d_888fffe8e6a8
  9809c426_a53d_65f8_fe2b_a5d0a61927bd["channelInactive()"]
  99c11204_2e4d_9976_0b17_a9fe4d4f4590 -->|method| 9809c426_a53d_65f8_fe2b_a5d0a61927bd
  343c08cf_dd00_1cf4_3588_ef743604d9f2["channelRead()"]
  99c11204_2e4d_9976_0b17_a9fe4d4f4590 -->|method| 343c08cf_dd00_1cf4_3588_ef743604d9f2
  8c8f1c88_dc70_142c_2060_8aeafc773f8d["userEventTriggered()"]
  99c11204_2e4d_9976_0b17_a9fe4d4f4590 -->|method| 8c8f1c88_dc70_142c_2060_8aeafc773f8d
  997eb9b9_d03e_ee8a_7a53_c90f09629428["addIsShutdown()"]
  99c11204_2e4d_9976_0b17_a9fe4d4f4590 -->|method| 997eb9b9_d03e_ee8a_7a53_c90f09629428
  582266d2_3cd2_7050_496d_3cfecdd426a2["assertSequence()"]
  99c11204_2e4d_9976_0b17_a9fe4d4f4590 -->|method| 582266d2_3cd2_7050_496d_3cfecdd426a2

Relationship Graph

Source Code

codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamHalfClosureTest.java lines 101–155

    private static final class StreamHandler extends ChannelInboundHandlerAdapter {
        private final BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();

        @Override
        public void channelRegistered(ChannelHandlerContext ctx) {
            queue.add(0);
        }

        @Override
        public void channelInactive(ChannelHandlerContext ctx) {
            queue.add(5);
            // Close the QUIC channel as well.
            ctx.channel().parent().close();
        }

        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) {
            ReferenceCountUtil.release(msg);
            if (((QuicStreamChannel) ctx.channel()).isInputShutdown()) {
                queue.add(1);
            }
        }

        @Override
        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) {
            if (evt == ChannelInputShutdownEvent.INSTANCE) {
                addIsShutdown(ctx);
                queue.add(3);
            } else if (evt == ChannelInputShutdownReadComplete.INSTANCE) {
                queue.add(4);
                ctx.close();
            }
        }

        private void addIsShutdown(ChannelHandlerContext ctx) {
            if (((QuicStreamChannel) ctx.channel()).isInputShutdown()) {
                queue.add(2);
            }
        }

        void assertSequence() throws Exception {
            assertEquals(0, (int) queue.take());
            int value = queue.take();
            if (value == 1) {
                // If we did see the value of 1 it should be followed by 2 directly.
                assertEquals(2, (int) queue.take());
            } else {
                assertEquals(2, value);
            }
            assertEquals(3, (int) queue.take());
            assertEquals(4, (int) queue.take());
            assertEquals(5, (int) queue.take());
            assertTrue(queue.isEmpty());
        }
    }

Frequently Asked Questions

What is the StreamHandler class?
StreamHandler is a class in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamHalfClosureTest.java.
Where is StreamHandler defined?
StreamHandler is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicStreamHalfClosureTest.java at line 101.

Analyze Your Own Codebase

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

Try Supermodel Free