Class DnsNameResolverBuilder

    • Constructor Detail

      • DnsNameResolverBuilder

        public DnsNameResolverBuilder()
        Creates a new builder.
      • DnsNameResolverBuilder

        public DnsNameResolverBuilder​(io.netty.channel.EventLoop eventLoop)
        Creates a new builder.
        Parameters:
        eventLoop - the EventLoop which will perform the communication with the DNS servers.
    • Method Detail

      • eventLoop

        public DnsNameResolverBuilder eventLoop​(io.netty.channel.EventLoop eventLoop)
        Sets the EventLoop which will perform the communication with the DNS servers.
        Parameters:
        eventLoop - the EventLoop
        Returns:
        this
      • channelFactory

        @Deprecated
        protected io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.DatagramChannel> channelFactory()
        Deprecated.
      • socketChannelFactory

        public DnsNameResolverBuilder socketChannelFactory​(io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.SocketChannel> channelFactory)
        Sets the ChannelFactory that will create a SocketChannel for TCP fallback if needed.

        TCP fallback is not enabled by default and must be enabled by providing a non-null ChannelFactory for this method.

        Parameters:
        channelFactory - the ChannelFactory or null if TCP fallback should not be supported. By default, TCP fallback is not enabled.
        Returns:
        this
      • socketChannelType

        public DnsNameResolverBuilder socketChannelType​(Class<? extends io.netty.channel.socket.SocketChannel> channelType)
        Sets the ChannelFactory as a ReflectiveChannelFactory of this type for TCP fallback if needed. Use as an alternative to socketChannelFactory(ChannelFactory).

        TCP fallback is not enabled by default and must be enabled by providing a non-null channelType for this method.

        Parameters:
        channelType - the type or null if TCP fallback should not be supported. By default, TCP fallback is not enabled.
        Returns:
        this
      • socketChannelFactory

        public DnsNameResolverBuilder socketChannelFactory​(io.netty.channel.ChannelFactory<? extends io.netty.channel.socket.SocketChannel> channelFactory,
                                                           boolean retryOnTimeout)
        Sets the ChannelFactory that will create a SocketChannel for TCP fallback if needed.

        TCP fallback is not enabled by default and must be enabled by providing a non-null ChannelFactory for this method.

        Parameters:
        channelFactory - the ChannelFactory or null if TCP fallback should not be supported. By default, TCP fallback is not enabled.
        retryOnTimeout - if true the DnsNameResolver will also fallback to TCP if a timeout was detected, if false it will only try to use TCP if the response was marked as truncated.
        Returns:
        this
      • socketChannelType

        public DnsNameResolverBuilder socketChannelType​(Class<? extends io.netty.channel.socket.SocketChannel> channelType,
                                                        boolean retryOnTimeout)
        Sets the ChannelFactory as a ReflectiveChannelFactory of this type for TCP fallback if needed. Use as an alternative to socketChannelFactory(ChannelFactory).

        TCP fallback is not enabled by default and must be enabled by providing a non-null channelType for this method.

        Parameters:
        channelType - the type or null if TCP fallback should not be supported. By default, TCP fallback is not enabled.
        retryOnTimeout - if true the DnsNameResolver will also fallback to TCP if a timeout was detected, if false it will only try to use TCP if the response was marked as truncated.
        Returns:
        this
      • resolveCache

        public DnsNameResolverBuilder resolveCache​(DnsCache resolveCache)
        Sets the cache for resolution results.
        Parameters:
        resolveCache - the DNS resolution results cache
        Returns:
        this
      • cnameCache

        public DnsNameResolverBuilder cnameCache​(DnsCnameCache cnameCache)
        Sets the cache for CNAME mappings.
        Parameters:
        cnameCache - the cache used to cache CNAME mappings for a domain.
        Returns:
        this
      • dnsQueryLifecycleObserverFactory

        public DnsNameResolverBuilder dnsQueryLifecycleObserverFactory​(DnsQueryLifecycleObserverFactory lifecycleObserverFactory)
        Set the factory used to generate objects which can observe individual DNS queries.
        Parameters:
        lifecycleObserverFactory - the factory used to generate objects which can observe individual DNS queries.
        Returns:
        this
      • authoritativeDnsServerCache

        public DnsNameResolverBuilder authoritativeDnsServerCache​(AuthoritativeDnsServerCache authoritativeDnsServerCache)
        Sets the cache for authoritative NS servers
        Parameters:
        authoritativeDnsServerCache - the authoritative NS servers cache
        Returns:
        this
      • localAddress

        public DnsNameResolverBuilder localAddress​(SocketAddress localAddress)
        Configure the address that will be used to bind too. If null the default will be used.
        Parameters:
        localAddress - the bind address
        Returns:
        this
      • ttl

        public DnsNameResolverBuilder ttl​(int minTtl,
                                          int maxTtl)
        Sets the minimum and maximum TTL of the cached DNS resource records (in seconds). If the TTL of the DNS resource record returned by the DNS server is less than the minimum TTL or greater than the maximum TTL, this resolver will ignore the TTL from the DNS server and use the minimum TTL or the maximum TTL instead respectively. The default value is 0 and Integer.MAX_VALUE, which practically tells this resolver to respect the TTL from the DNS server.
        Parameters:
        minTtl - the minimum TTL
        maxTtl - the maximum TTL
        Returns:
        this
      • negativeTtl

        public DnsNameResolverBuilder negativeTtl​(int negativeTtl)
        Sets the TTL of the cache for the failed DNS queries (in seconds).
        Parameters:
        negativeTtl - the TTL for failed cached queries
        Returns:
        this
      • queryTimeoutMillis

        public DnsNameResolverBuilder queryTimeoutMillis​(long queryTimeoutMillis)
        Sets the timeout of each DNS query performed by this resolver (in milliseconds). 0 disables the timeout. If not set or a negative number is set, the default timeout is used.
        Parameters:
        queryTimeoutMillis - the query timeout
        Returns:
        this
      • computeResolvedAddressTypes

        @Deprecated
        public static io.netty.resolver.ResolvedAddressTypes computeResolvedAddressTypes​(io.netty.channel.socket.InternetProtocolFamily... internetProtocolFamilies)
        Compute a ResolvedAddressTypes from some InternetProtocolFamilys. An empty input will return the default value, based on "java.net" System properties. Valid inputs are (), (IPv4), (IPv6), (Ipv4, IPv6) and (IPv6, IPv4).
        Parameters:
        internetProtocolFamilies - a valid sequence of InternetProtocolFamilys
        Returns:
        a ResolvedAddressTypes
      • toResolvedAddressTypes

        public static io.netty.resolver.ResolvedAddressTypes toResolvedAddressTypes​(io.netty.channel.socket.SocketProtocolFamily... socketProtocolFamilies)
        Compute a ResolvedAddressTypes from some SocketProtocolFamilys. An empty input will return the default value, based on "java.net" System properties. Valid inputs are (), (IPv4), (IPv6), (Ipv4, IPv6) and (IPv6, IPv4).
        Parameters:
        socketProtocolFamilies - a valid sequence of SocketProtocolFamilys
        Returns:
        a ResolvedAddressTypes
      • resolvedAddressTypes

        public DnsNameResolverBuilder resolvedAddressTypes​(io.netty.resolver.ResolvedAddressTypes resolvedAddressTypes)
        Sets the list of the protocol families of the address resolved. You can use computeResolvedAddressTypes(InternetProtocolFamily...) to get a ResolvedAddressTypes out of some InternetProtocolFamilys.
        Parameters:
        resolvedAddressTypes - the address types
        Returns:
        this
      • completeOncePreferredResolved

        public DnsNameResolverBuilder completeOncePreferredResolved​(boolean completeOncePreferredResolved)
        If true SimpleNameResolver.resolveAll(String) will notify the returned Future as soon as all queries for the preferred address-type are complete.
        Parameters:
        completeOncePreferredResolved - true to enable, false to disable.
        Returns:
        this
      • recursionDesired

        public DnsNameResolverBuilder recursionDesired​(boolean recursionDesired)
        Sets if this resolver has to send a DNS query with the RD (recursion desired) flag set.
        Parameters:
        recursionDesired - true if recursion is desired
        Returns:
        this
      • maxQueriesPerResolve

        public DnsNameResolverBuilder maxQueriesPerResolve​(int maxQueriesPerResolve)
        Sets the maximum allowed number of DNS queries to send when resolving a host name.
        Parameters:
        maxQueriesPerResolve - the max number of queries
        Returns:
        this
      • traceEnabled

        @Deprecated
        public DnsNameResolverBuilder traceEnabled​(boolean traceEnabled)
        Deprecated.
        Sets if this resolver should generate the detailed trace information in an exception message so that it is easier to understand the cause of resolution failure.
        Parameters:
        traceEnabled - true if trace is enabled
        Returns:
        this
      • maxPayloadSize

        public DnsNameResolverBuilder maxPayloadSize​(int maxPayloadSize)
        Sets the capacity of the datagram packet buffer (in bytes). The default value is 4096 bytes.
        Parameters:
        maxPayloadSize - the capacity of the datagram packet buffer
        Returns:
        this
      • optResourceEnabled

        public DnsNameResolverBuilder optResourceEnabled​(boolean optResourceEnabled)
        Enable the automatic inclusion of a optional records that tries to give the remote DNS server a hint about how much data the resolver can read per response. Some DNSServer may not support this and so fail to answer queries. If you find problems you may want to disable this.
        Parameters:
        optResourceEnabled - if optional records inclusion is enabled
        Returns:
        this
      • hostsFileEntriesResolver

        public DnsNameResolverBuilder hostsFileEntriesResolver​(io.netty.resolver.HostsFileEntriesResolver hostsFileEntriesResolver)
        Parameters:
        hostsFileEntriesResolver - the HostsFileEntriesResolver used to first check if the hostname is locally aliased.
        Returns:
        this
      • searchDomains

        public DnsNameResolverBuilder searchDomains​(Iterable<String> searchDomains)
        Set the list of search domains of the resolver.
        Parameters:
        searchDomains - the search domains
        Returns:
        this
      • ndots

        public DnsNameResolverBuilder ndots​(int ndots)
        Set the number of dots which must appear in a name before an initial absolute query is made. The default value is 1.
        Parameters:
        ndots - the ndots value
        Returns:
        this
      • decodeIdn

        public DnsNameResolverBuilder decodeIdn​(boolean decodeIdn)
        Set if domain / host names should be decoded to unicode when received. See rfc3492.
        Parameters:
        decodeIdn - if should get decoded
        Returns:
        this
      • consolidateCacheSize

        public DnsNameResolverBuilder consolidateCacheSize​(int maxNumConsolidation)
        Set the maximum size of the cache that is used to consolidate lookups for different hostnames when in-flight. This means if multiple lookups are done for the same hostname and still in-flight only one actual query will be made and the result will be cascaded to the others.
        Parameters:
        maxNumConsolidation - the maximum lookups to consolidate (different hostnames), or 0 if no consolidation should be performed.
        Returns:
        this