Class DnsResolveContext<T>

    • Field Detail

      • PROP_TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS

        private static final java.lang.String PROP_TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS
        See Also:
        Constant Field Values
      • TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS

        static boolean TRY_FINAL_CNAME_ON_ADDRESS_LOOKUPS
      • NXDOMAIN_QUERY_FAILED_EXCEPTION

        private static final java.lang.RuntimeException NXDOMAIN_QUERY_FAILED_EXCEPTION
      • CNAME_NOT_FOUND_QUERY_FAILED_EXCEPTION

        private static final java.lang.RuntimeException CNAME_NOT_FOUND_QUERY_FAILED_EXCEPTION
      • NO_MATCHING_RECORD_QUERY_FAILED_EXCEPTION

        private static final java.lang.RuntimeException NO_MATCHING_RECORD_QUERY_FAILED_EXCEPTION
      • UNRECOGNIZED_TYPE_QUERY_FAILED_EXCEPTION

        private static final java.lang.RuntimeException UNRECOGNIZED_TYPE_QUERY_FAILED_EXCEPTION
      • NAME_SERVERS_EXHAUSTED_EXCEPTION

        private static final java.lang.RuntimeException NAME_SERVERS_EXHAUSTED_EXCEPTION
      • SERVFAIL_QUERY_FAILED_EXCEPTION

        private static final java.lang.RuntimeException SERVFAIL_QUERY_FAILED_EXCEPTION
      • NXDOMAIN_CAUSE_QUERY_FAILED_EXCEPTION

        private static final java.lang.RuntimeException NXDOMAIN_CAUSE_QUERY_FAILED_EXCEPTION
      • channel

        private final Channel channel
      • channelReadyFuture

        private final Future<? extends Channel> channelReadyFuture
      • originalPromise

        private final Promise<?> originalPromise
      • hostname

        private final java.lang.String hostname
      • dnsClass

        private final int dnsClass
      • finalResult

        private java.util.List<T> finalResult
      • allowedQueries

        private int allowedQueries
      • triedCNAME

        private boolean triedCNAME
      • completeEarly

        private boolean completeEarly
    • Method Detail

      • filterResults

        abstract java.util.List<T> filterResults​(java.util.List<T> unfiltered)
        Returns a filtered list of results which should be the final result of DNS resolution. This must take into account JDK semantics such as NetUtil.isIpV6AddressesPreferred().
      • isCompleteEarly

        abstract boolean isCompleteEarly​(T resolved)
      • isDuplicateAllowed

        abstract boolean isDuplicateAllowed()
        Returns true if we should allow duplicates in the result or false if no duplicates should be included.
      • cache

        abstract void cache​(java.lang.String hostname,
                            DnsRecord[] additionals,
                            DnsRecord result,
                            T convertedResult)
        Caches a successful resolution.
      • cache

        abstract void cache​(java.lang.String hostname,
                            DnsRecord[] additionals,
                            java.net.UnknownHostException cause)
        Caches a failed resolution.
      • resolve

        void resolve​(Promise<java.util.List<T>> promise)
      • hasNDots

        private boolean hasNDots()
      • doSearchDomainQuery

        void doSearchDomainQuery​(java.lang.String hostname,
                                 Promise<java.util.List<T>> nextPromise)
      • hostnameWithDot

        private static java.lang.String hostnameWithDot​(java.lang.String name)
      • cnameResolveFromCache

        static java.lang.String cnameResolveFromCache​(DnsCnameCache cnameCache,
                                                      java.lang.String name)
                                               throws java.net.UnknownHostException
        Throws:
        java.net.UnknownHostException
      • cnameResolveFromCacheLoop

        private static java.lang.String cnameResolveFromCacheLoop​(DnsCnameCache cnameCache,
                                                                  java.lang.String hostname,
                                                                  java.lang.String first,
                                                                  java.lang.String mapping)
                                                           throws java.net.UnknownHostException
        Throws:
        java.net.UnknownHostException
      • checkCnameLoop

        private static void checkCnameLoop​(java.lang.String hostname,
                                           java.lang.String first,
                                           java.lang.String second)
                                    throws java.net.UnknownHostException
        Throws:
        java.net.UnknownHostException
      • internalResolve

        private void internalResolve​(java.lang.String name,
                                     Promise<java.util.List<T>> promise)
      • queryUnresolvedNameServer

        private void queryUnresolvedNameServer​(java.net.InetSocketAddress nameServerAddr,
                                               DnsServerAddressStream nameServerAddrStream,
                                               int nameServerAddrStreamIndex,
                                               DnsQuestion question,
                                               DnsQueryLifecycleObserver queryLifecycleObserver,
                                               Promise<java.util.List<T>> promise,
                                               java.lang.Throwable cause)
      • cause

        private static java.lang.Throwable cause​(DnsResponseCode code)
      • extractAuthoritativeNameServers

        private static DnsResolveContext.AuthoritativeNameServerList extractAuthoritativeNameServers​(java.lang.String questionName,
                                                                                                     DnsResponse res)
        Returns the {@code {@link AuthoritativeNameServerList} which were included in {@link DnsSection#AUTHORITY} or {@code null} if non are found.
      • onResponseCNAME

        private void onResponseCNAME​(DnsQuestion question,
                                     java.util.Map<java.lang.String,​java.lang.String> cnames,
                                     DnsQueryLifecycleObserver queryLifecycleObserver,
                                     Promise<java.util.List<T>> promise)
      • finishResolve

        private void finishResolve​(Promise<java.util.List<T>> promise,
                                   java.lang.Throwable cause)
      • decodeDomainName

        static java.lang.String decodeDomainName​(ByteBuf in)