Class SocketAddressResolver.Async

  • All Implemented Interfaces:
    SocketAddressResolver
    Enclosing interface:
    SocketAddressResolver

    @ManagedObject("The asynchronous address resolver")
    public static class SocketAddressResolver.Async
    extends java.lang.Object
    implements SocketAddressResolver

    Creates InetSocketAddress instances asynchronously in a different thread.

    InetSocketAddress(String, int) attempts to perform a DNS resolution of the host name, and this may block for several seconds. This class creates the InetSocketAddress in a separate thread and provides the result through a Promise, with the possibility to specify a timeout for the operation.

    Example usage:

     SocketAddressResolver resolver = new SocketAddressResolver.Async(executor, scheduler, timeout);
     resolver.resolve("www.google.com", 80, new Promise<SocketAddress>()
     {
         public void succeeded(SocketAddress result)
         {
             // The address was resolved
         }
    
         public void failed(Throwable failure)
         {
             // The address resolution failed
         }
     });
     
    • Constructor Summary

      Constructors 
      Constructor Description
      Async​(java.util.concurrent.Executor executor, Scheduler scheduler, long timeout)
      Creates a new instance with the given executor (to perform DNS resolution in a separate thread), the given scheduler (to cancel the operation if it takes too long) and the given timeout, in milliseconds.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.concurrent.Executor getExecutor()  
      Scheduler getScheduler()  
      long getTimeout()  
      void resolve​(java.lang.String host, int port, Promise<java.util.List<java.net.InetSocketAddress>> promise)
      Resolves via DNS the given host and port, within the connect timeout, returning a list of InetSocketAddress through the given Promise.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Async

        public Async​(java.util.concurrent.Executor executor,
                     Scheduler scheduler,
                     long timeout)
        Creates a new instance with the given executor (to perform DNS resolution in a separate thread), the given scheduler (to cancel the operation if it takes too long) and the given timeout, in milliseconds.
        Parameters:
        executor - the thread pool to use to perform DNS resolution in pooled threads
        scheduler - the scheduler to schedule tasks to cancel DNS resolution if it takes too long
        timeout - the timeout, in milliseconds, for the DNS resolution to complete
    • Method Detail

      • getExecutor

        public java.util.concurrent.Executor getExecutor()
      • getScheduler

        public Scheduler getScheduler()
      • resolve

        public void resolve​(java.lang.String host,
                            int port,
                            Promise<java.util.List<java.net.InetSocketAddress>> promise)
        Description copied from interface: SocketAddressResolver
        Resolves via DNS the given host and port, within the connect timeout, returning a list of InetSocketAddress through the given Promise.
        Specified by:
        resolve in interface SocketAddressResolver
        Parameters:
        host - the host to resolve
        port - the port of the resulting socket address
        promise - the callback invoked when the resolution succeeds or fails