Home / Class/ DnsResponseHandler Class — netty Architecture

DnsResponseHandler Class — netty Architecture

Architecture documentation for the DnsResponseHandler class in DnsNameResolver.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  8c108031_e3e7_14e2_222f_1bd939b4c08d["DnsResponseHandler"]
  70b10ccf_a76d_33ba_22ef_90a5a10e8ac3["DnsNameResolver.java"]
  8c108031_e3e7_14e2_222f_1bd939b4c08d -->|defined in| 70b10ccf_a76d_33ba_22ef_90a5a10e8ac3
  34572130_4bd4_efe5_a414_ae71beb61f34["DnsResponseHandler()"]
  8c108031_e3e7_14e2_222f_1bd939b4c08d -->|method| 34572130_4bd4_efe5_a414_ae71beb61f34
  ad4283b4_8f41_0bad_f00a_e03157f269ed["isSharable()"]
  8c108031_e3e7_14e2_222f_1bd939b4c08d -->|method| ad4283b4_8f41_0bad_f00a_e03157f269ed
  f073c95f_965a_fe6b_127f_a8bdf50d8068["channelRead()"]
  8c108031_e3e7_14e2_222f_1bd939b4c08d -->|method| f073c95f_965a_fe6b_127f_a8bdf50d8068
  5df947e5_dbe1_ae0b_ca52_864185a60ae4["exceptionCaught()"]
  8c108031_e3e7_14e2_222f_1bd939b4c08d -->|method| 5df947e5_dbe1_ae0b_ca52_864185a60ae4

Relationship Graph

Source Code

resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java lines 1496–1541

    private static final class DnsResponseHandler extends ChannelInboundHandlerAdapter {

        private final DnsQueryContextManager queryContextManager;

        DnsResponseHandler(DnsQueryContextManager queryContextManager) {
            this.queryContextManager = queryContextManager;
        }

        @Override
        public boolean isSharable() {
            return true;
        }

        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) {
            final Channel qCh = ctx.channel();
            final DatagramDnsResponse res = (DatagramDnsResponse) msg;
            final int queryId = res.id();
            logger.debug("{} RECEIVED: UDP [{}: {}], {}", qCh, queryId, res.sender(), res);

            final DnsQueryContext qCtx = queryContextManager.get(res.sender(), queryId);
            if (qCtx == null) {
                logger.debug("{} Received a DNS response with an unknown ID: UDP [{}: {}]",
                        qCh, queryId, res.sender());
                res.release();
                return;
            } else if (qCtx.isDone()) {
                logger.debug("{} Received a DNS response for a query that was timed out or cancelled: UDP [{}: {}]",
                        qCh, queryId, res.sender());
                res.release();
                return;
            }

            // The context will handle truncation itself.
            qCtx.finishSuccess(res, res.isTruncated());
        }

        @Override
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
            if (cause instanceof CorruptedFrameException) {
                logger.debug("{} Unable to decode DNS response: UDP", ctx.channel(), cause);
            } else {
                logger.warn("{} Unexpected exception: UDP", ctx.channel(), cause);
            }
        }
    }

Frequently Asked Questions

What is the DnsResponseHandler class?
DnsResponseHandler is a class in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java.
Where is DnsResponseHandler defined?
DnsResponseHandler is defined in resolver-dns/src/main/java/io/netty/resolver/dns/DnsNameResolver.java at line 1496.

Analyze Your Own Codebase

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

Try Supermodel Free