Class AbstractIoAcceptor

java.lang.Object
org.apache.mina.core.service.AbstractIoService
org.apache.mina.core.service.AbstractIoAcceptor
All Implemented Interfaces:
IoAcceptor, IoService
Direct Known Subclasses:
AbstractPollingIoAcceptor, NioDatagramAcceptor, VmPipeAcceptor

public abstract class AbstractIoAcceptor extends AbstractIoService implements IoAcceptor
A base implementation of IoAcceptor.
  • Field Details

    • defaultLocalAddresses

      private final List<SocketAddress> defaultLocalAddresses
    • unmodifiableDefaultLocalAddresses

      private final List<SocketAddress> unmodifiableDefaultLocalAddresses
    • boundAddresses

      private final Set<SocketAddress> boundAddresses
    • disconnectOnUnbind

      private boolean disconnectOnUnbind
    • bindLock

      protected final Object bindLock
      The lock object which is acquired while bind or unbind operation is performed. Acquire this lock in your property setters which shouldn't be changed while the service is bound.
  • Constructor Details

  • Method Details

    • getLocalAddress

      public SocketAddress getLocalAddress()
      Returns the local address which is bound currently. If more than one address are bound, only one of them will be returned, but it's not necessarily the firstly bound address.
      Specified by:
      getLocalAddress in interface IoAcceptor
      Returns:
      The bound LocalAddress
    • getLocalAddresses

      public final Set<SocketAddress> getLocalAddresses()
      Returns a Set of the local addresses which are bound currently.
      Specified by:
      getLocalAddresses in interface IoAcceptor
      Returns:
      The Set of bound LocalAddresses
    • getDefaultLocalAddress

      public SocketAddress getDefaultLocalAddress()
      Returns the default local address to bind when no argument is specified in IoAcceptor.bind() method. Please note that the default will not be used if any local address is specified. If more than one address are set, only one of them will be returned, but it's not necessarily the firstly specified address in IoAcceptor.setDefaultLocalAddresses(List).
      Specified by:
      getDefaultLocalAddress in interface IoAcceptor
      Returns:
      The default bound LocalAddress
    • setDefaultLocalAddress

      public final void setDefaultLocalAddress(SocketAddress localAddress)
      Sets the default local address to bind when no argument is specified in IoAcceptor.bind() method. Please note that the default will not be used if any local address is specified.
      Specified by:
      setDefaultLocalAddress in interface IoAcceptor
      Parameters:
      localAddress - The local addresses to bind the acceptor on
    • getDefaultLocalAddresses

      public final List<SocketAddress> getDefaultLocalAddresses()
      Returns a List of the default local addresses to bind when no argument is specified in IoAcceptor.bind() method. Please note that the default will not be used if any local address is specified.
      Specified by:
      getDefaultLocalAddresses in interface IoAcceptor
      Returns:
      The list of default bound LocalAddresses
    • setDefaultLocalAddresses

      public final void setDefaultLocalAddresses(List<? extends SocketAddress> localAddresses)
      Sets the default local addresses to bind when no argument is specified in IoAcceptor.bind() method. Please note that the default will not be used if any local address is specified.
      Specified by:
      setDefaultLocalAddresses in interface IoAcceptor
      Parameters:
      localAddresses - The local addresses to bind the acceptor on
    • setDefaultLocalAddresses

      public final void setDefaultLocalAddresses(Iterable<? extends SocketAddress> localAddresses)
      Sets the default local addresses to bind when no argument is specified in IoAcceptor.bind() method. Please note that the default will not be used if any local address is specified.
      Specified by:
      setDefaultLocalAddresses in interface IoAcceptor
      Parameters:
      localAddresses - The local addresses to bind the acceptor on
    • setDefaultLocalAddresses

      public final void setDefaultLocalAddresses(SocketAddress firstLocalAddress, SocketAddress... otherLocalAddresses)
      Sets the default local addresses to bind when no argument is specified in IoAcceptor.bind() method. Please note that the default will not be used if any local address is specified.
      Specified by:
      setDefaultLocalAddresses in interface IoAcceptor
      Parameters:
      firstLocalAddress - The first local address to bind the acceptor on
      otherLocalAddresses - The other local addresses to bind the acceptor on
    • isCloseOnDeactivation

      public final boolean isCloseOnDeactivation()
      Returns true if and only if all clients are closed when this acceptor unbinds from all the related local address (i.e. when the service is deactivated).
      Specified by:
      isCloseOnDeactivation in interface IoAcceptor
      Returns:
      true if the service sets the closeOnDeactivation flag
    • setCloseOnDeactivation

      public final void setCloseOnDeactivation(boolean disconnectClientsOnUnbind)
      Sets whether all client sessions are closed when this acceptor unbinds from all the related local addresses (i.e. when the service is deactivated). The default value is true.
      Specified by:
      setCloseOnDeactivation in interface IoAcceptor
      Parameters:
      disconnectClientsOnUnbind - true if we should close on deactivation
    • bind

      public final void bind() throws IOException
      Binds to the default local address(es) and start to accept incoming connections.
      Specified by:
      bind in interface IoAcceptor
      Throws:
      IOException - if failed to bind
    • bind

      public final void bind(SocketAddress localAddress) throws IOException
      Binds to the specified local address and start to accept incoming connections.
      Specified by:
      bind in interface IoAcceptor
      Parameters:
      localAddress - The SocketAddress to bind to
      Throws:
      IOException - if failed to bind
    • bind

      public final void bind(SocketAddress... addresses) throws IOException
      Binds to the specified local addresses and start to accept incoming connections. If no address is given, bind on the default local address.
      Specified by:
      bind in interface IoAcceptor
      Parameters:
      addresses - The SocketAddresses to bind to
      Throws:
      IOException - if failed to bind
    • bind

      public final void bind(SocketAddress firstLocalAddress, SocketAddress... addresses) throws IOException
      Binds to the specified local addresses and start to accept incoming connections. If no address is given, bind on the default local address.
      Specified by:
      bind in interface IoAcceptor
      Parameters:
      firstLocalAddress - The first address to bind to
      addresses - The SocketAddresses to bind to
      Throws:
      IOException - if failed to bind
    • bind

      public final void bind(Iterable<? extends SocketAddress> localAddresses) throws IOException
      Binds to the specified local addresses and start to accept incoming connections.
      Specified by:
      bind in interface IoAcceptor
      Parameters:
      localAddresses - The local address we will be bound to
      Throws:
      IOException - if failed to bind
    • unbind

      public final void unbind()
      Unbinds from all local addresses that this service is bound to and stops to accept incoming connections. All managed connections will be closed if disconnectOnUnbind property is true. This method returns silently if no local address is bound yet.
      Specified by:
      unbind in interface IoAcceptor
    • unbind

      public final void unbind(SocketAddress localAddress)
      Unbinds from the specified local address and stop to accept incoming connections. All managed connections will be closed if disconnectOnUnbind property is true. This method returns silently if the default local address is not bound yet.
      Specified by:
      unbind in interface IoAcceptor
      Parameters:
      localAddress - The local address we will be unbound from
    • unbind

      public final void unbind(SocketAddress firstLocalAddress, SocketAddress... otherLocalAddresses)
      Unbinds from the specified local addresses and stop to accept incoming connections. All managed connections will be closed if disconnectOnUnbind property is true. This method returns silently if the default local addresses are not bound yet.
      Specified by:
      unbind in interface IoAcceptor
      Parameters:
      firstLocalAddress - The first local address to be unbound from
      otherLocalAddresses - The other local address to be unbound from
    • unbind

      public final void unbind(Iterable<? extends SocketAddress> localAddresses)
      Unbinds from the specified local addresses and stop to accept incoming connections. All managed connections will be closed if disconnectOnUnbind property is true. This method returns silently if the default local addresses are not bound yet.
      Specified by:
      unbind in interface IoAcceptor
      Parameters:
      localAddresses - The local address we will be unbound from
    • bindInternal

      protected abstract Set<SocketAddress> bindInternal(List<? extends SocketAddress> localAddresses) throws Exception
      Starts the acceptor, and register the given addresses
      Parameters:
      localAddresses - The address to bind to
      Returns:
      the Set of the local addresses which is bound actually
      Throws:
      Exception - If the bind failed
    • unbind0

      protected abstract void unbind0(List<? extends SocketAddress> localAddresses) throws Exception
      Implement this method to perform the actual unbind operation.
      Parameters:
      localAddresses - The address to unbind from
      Throws:
      Exception - If the unbind failed
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • checkAddressType

      private void checkAddressType(SocketAddress a)