Home / Class/ MessageDiscarder Class — netty Architecture

MessageDiscarder Class — netty Architecture

Architecture documentation for the MessageDiscarder class in LocalTransportThreadModelTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  4416ca34_8b23_0a00_46de_59cd1da38ed7["MessageDiscarder"]
  adb139e6_2a46_ab0a_b143_d2609be299b3["LocalTransportThreadModelTest.java"]
  4416ca34_8b23_0a00_46de_59cd1da38ed7 -->|defined in| adb139e6_2a46_ab0a_b143_d2609be299b3
  6348c4c7_af5b_1906_cb20_8d15cf666108["channelRead()"]
  4416ca34_8b23_0a00_46de_59cd1da38ed7 -->|method| 6348c4c7_af5b_1906_cb20_8d15cf666108
  8aab9b97_817c_1676_25bc_fb10a37c9473["write()"]
  4416ca34_8b23_0a00_46de_59cd1da38ed7 -->|method| 8aab9b97_817c_1676_25bc_fb10a37c9473
  3c45ea19_ea81_c89a_3d6f_a0e835621c24["exceptionCaught()"]
  4416ca34_8b23_0a00_46de_59cd1da38ed7 -->|method| 3c45ea19_ea81_c89a_3d6f_a0e835621c24

Relationship Graph

Source Code

transport/src/test/java/io/netty/channel/local/LocalTransportThreadModelTest.java lines 572–611

    private static class MessageDiscarder extends ChannelDuplexHandler {

        private final AtomicReference<Throwable> exception = new AtomicReference<Throwable>();
        private volatile int inCnt;
        private volatile int outCnt;
        private volatile Thread t;

        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
            Thread t = this.t;
            if (t == null) {
                this.t = Thread.currentThread();
            } else {
                assertSame(t, Thread.currentThread());
            }

            int actual = (Integer) msg;
            int expected = inCnt ++;
            assertEquals(expected, actual);
        }

        @Override
        public void write(
                ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
            assertSame(t, Thread.currentThread());

            int actual = (Integer) msg;
            int expected = outCnt ++;
            assertEquals(expected, actual);
            ctx.write(msg, promise);
        }

        @Override
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
            exception.compareAndSet(null, cause);
            //System.err.print("[" + Thread.currentThread().getName() + "] ");
            //cause.printStackTrace();
            super.exceptionCaught(ctx, cause);
        }
    }

Frequently Asked Questions

What is the MessageDiscarder class?
MessageDiscarder is a class in the netty codebase, defined in transport/src/test/java/io/netty/channel/local/LocalTransportThreadModelTest.java.
Where is MessageDiscarder defined?
MessageDiscarder is defined in transport/src/test/java/io/netty/channel/local/LocalTransportThreadModelTest.java at line 572.

Analyze Your Own Codebase

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

Try Supermodel Free