Package org.minidns

Class AbstractDnsClient

    • Constructor Detail

      • AbstractDnsClient

        protected AbstractDnsClient​(DnsCache cache)
        Create a new DNS client with the given DNS cache.
        Parameters:
        cache - The backend DNS cache.
      • AbstractDnsClient

        protected AbstractDnsClient()
        Create a new DNS client using the global default cache.
    • Method Detail

      • query

        public final DnsQueryResult query​(java.lang.String name,
                                          Record.TYPE type,
                                          Record.CLASS clazz)
                                   throws java.io.IOException
        Query the system nameservers for a single entry of any class. This can be used to determine the name server version, if name is version.bind, type is TYPE.TXT and clazz is CLASS.CH.
        Parameters:
        name - The DNS name to request.
        type - The DNS type to request (SRV, A, AAAA, ...).
        clazz - The class of the request (usually IN for Internet).
        Returns:
        The response (or null on timeout/error).
        Throws:
        java.io.IOException - if an IO error occurs.
      • query

        public final DnsQueryResult query​(DnsName name,
                                          Record.TYPE type)
                                   throws java.io.IOException
        Query the system nameservers for a single entry of the class IN (which is used for MX, SRV, A, AAAA and most other RRs).
        Parameters:
        name - The DNS name to request.
        type - The DNS type to request (SRV, A, AAAA, ...).
        Returns:
        The response (or null on timeout/error).
        Throws:
        java.io.IOException - if an IO error occurs.
      • query

        public final DnsQueryResult query​(java.lang.CharSequence name,
                                          Record.TYPE type)
                                   throws java.io.IOException
        Query the system nameservers for a single entry of the class IN (which is used for MX, SRV, A, AAAA and most other RRs).
        Parameters:
        name - The DNS name to request.
        type - The DNS type to request (SRV, A, AAAA, ...).
        Returns:
        The response (or null on timeout/error).
        Throws:
        java.io.IOException - if an IO error occurs.
      • query

        protected abstract DnsQueryResult query​(DnsMessage.Builder query)
                                         throws java.io.IOException
        Send a query request to the DNS system.
        Parameters:
        query - The query to send to the server.
        Returns:
        The response (or null).
        Throws:
        java.io.IOException - if an IO error occurs.
      • queryAsync

        protected MiniDnsFuture<DnsQueryResult,​java.io.IOException> queryAsync​(DnsMessage.Builder query)
        Default implementation of an asynchronous DNS query which just wraps the synchronous case.

        Subclasses override this method to support true asynchronous queries.

        Parameters:
        query - the query.
        Returns:
        a future for this query.
      • query

        public final DnsQueryResult query​(Question q,
                                          java.net.InetAddress server,
                                          int port)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • query

        public final DnsQueryResult query​(DnsMessage requestMessage,
                                          java.net.InetAddress address,
                                          int port)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • isResponseCacheable

        protected boolean isResponseCacheable​(Question q,
                                              DnsQueryResult result)
        Whether a response from the DNS system should be cached or not.
        Parameters:
        q - The question the response message should answer.
        result - The DNS query result.
        Returns:
        True, if the response should be cached, false otherwise.
      • query

        public DnsQueryResult query​(java.lang.String name,
                                    Record.TYPE type,
                                    Record.CLASS clazz,
                                    java.net.InetAddress address,
                                    int port)
                             throws java.io.IOException
        Query a nameserver for a single entry.
        Parameters:
        name - The DNS name to request.
        type - The DNS type to request (SRV, A, AAAA, ...).
        clazz - The class of the request (usually IN for Internet).
        address - The DNS server address.
        port - The DNS server port.
        Returns:
        The response (or null on timeout / failure).
        Throws:
        java.io.IOException - On IO Errors.
      • query

        public DnsQueryResult query​(java.lang.String name,
                                    Record.TYPE type,
                                    Record.CLASS clazz,
                                    java.net.InetAddress address)
                             throws java.io.IOException
        Query a nameserver for a single entry.
        Parameters:
        name - The DNS name to request.
        type - The DNS type to request (SRV, A, AAAA, ...).
        clazz - The class of the request (usually IN for Internet).
        address - The DNS server host.
        Returns:
        The response (or null on timeout / failure).
        Throws:
        java.io.IOException - On IO Errors.
      • query

        public DnsQueryResult query​(java.lang.String name,
                                    Record.TYPE type,
                                    java.net.InetAddress address)
                             throws java.io.IOException
        Query a nameserver for a single entry of class IN.
        Parameters:
        name - The DNS name to request.
        type - The DNS type to request (SRV, A, AAAA, ...).
        address - The DNS server host.
        Returns:
        The response (or null on timeout / failure).
        Throws:
        java.io.IOException - On IO Errors.
      • query

        public final DnsQueryResult query​(DnsMessage query,
                                          java.net.InetAddress host)
                                   throws java.io.IOException
        Throws:
        java.io.IOException
      • query

        public DnsQueryResult query​(Question q,
                                    java.net.InetAddress address)
                             throws java.io.IOException
        Query a specific server for one entry.
        Parameters:
        q - The question section of the DNS query.
        address - The dns server address.
        Returns:
        The a DNS query result.
        Throws:
        java.io.IOException - On IOErrors.
      • setDataSource

        public void setDataSource​(DnsDataSource dataSource)
        Set a DnsDataSource to be used by the DnsClient. The default implementation will direct all queries directly to the Internet. This can be used to define a non-default handling for outgoing data. This can be useful to redirect the requests to a proxy or to modify requests after or responses before they are handled by the DnsClient implementation.
        Parameters:
        dataSource - An implementation of DNSDataSource that shall be used.
      • getCache

        public DnsCache getCache()
        Get the cache used by this DNS client.
        Returns:
        the cached used by this DNS client or null.