Home / Function/ reentrantReadSafety() — netty Function Reference

reentrantReadSafety() — netty Function Reference

Architecture documentation for the reentrantReadSafety() function in ByteToMessageDecoderTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  1f3da407_c6c1_faa8_491b_386ef79accb6["reentrantReadSafety()"]
  b1c999fe_35fb_8b70_a958_296cffb0616a["ByteToMessageDecoderTest"]
  1f3da407_c6c1_faa8_491b_386ef79accb6 -->|defined in| b1c999fe_35fb_8b70_a958_296cffb0616a
  5082856a_b229_862d_0072_81f9b24f56a3["EmbeddedChannel()"]
  1f3da407_c6c1_faa8_491b_386ef79accb6 -->|calls| 5082856a_b229_862d_0072_81f9b24f56a3
  aa1df8f4_7da8_b487_8429_185255a151e0["read()"]
  1f3da407_c6c1_faa8_491b_386ef79accb6 -->|calls| aa1df8f4_7da8_b487_8429_185255a151e0
  style 1f3da407_c6c1_faa8_491b_386ef79accb6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-base/src/test/java/io/netty/handler/codec/ByteToMessageDecoderTest.java lines 688–717

    @Test
    void reentrantReadSafety() throws Exception {
        EmbeddedChannel channel = new EmbeddedChannel();
        ByteToMessageDecoder decoder = new ByteToMessageDecoder() {
            int reentrancy;

            @Override
            protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
                reentrancy++;
                if (reentrancy == 1) {
                    ByteBuf buf2 = channel.alloc().buffer();
                    buf2.writeLong(42); // Adding 8 bytes.
                    assertFalse(channel.writeInbound(buf2)); // Reentrant call back into ByteToMessageDecoder
                    ctx.read();
                }
                int bytes = in.readableBytes();
                out.add(bytes);
                in.skipBytes(bytes);
            }
        };
        channel.pipeline().addLast(decoder);
        ByteBuf buf1 = channel.alloc().buffer();
        buf1.writeInt(42); // Adding 4 bytes.
        assertTrue(channel.writeInbound(buf1));
        Integer first = channel.readInbound();
        Integer second = channel.readInbound();
        assertEquals(4, first);
        assertEquals(8, second);
        assertFalse(channel.finishAndReleaseAll());
    }

Domain

Subdomains

Frequently Asked Questions

What does reentrantReadSafety() do?
reentrantReadSafety() is a function in the netty codebase, defined in codec-base/src/test/java/io/netty/handler/codec/ByteToMessageDecoderTest.java.
Where is reentrantReadSafety() defined?
reentrantReadSafety() is defined in codec-base/src/test/java/io/netty/handler/codec/ByteToMessageDecoderTest.java at line 688.
What does reentrantReadSafety() call?
reentrantReadSafety() calls 2 function(s): EmbeddedChannel, read.

Analyze Your Own Codebase

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

Try Supermodel Free