Package org.apache.mina.core.service
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 ofIoAcceptor
.- Author:
- Apache MINA Project
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractIoAcceptor.AcceptorOperationFuture
AIoFuture
-
Nested classes/interfaces inherited from class org.apache.mina.core.service.AbstractIoService
AbstractIoService.ServiceOperationFuture
-
-
Field Summary
Fields Modifier and Type Field Description protected Object
bindLock
The lock object which is acquired while bind or unbind operation is performed.-
Fields inherited from class org.apache.mina.core.service.AbstractIoService
disposalLock, LOGGER, sessionConfig
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractIoAcceptor(IoSessionConfig sessionConfig, Executor executor)
Constructor forAbstractIoAcceptor
.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
bind()
Binds to the default local address(es) and start to accept incoming connections.void
bind(Iterable<? extends SocketAddress> localAddresses)
Binds to the specified local addresses and start to accept incoming connections.void
bind(SocketAddress localAddress)
Binds to the specified local address and start to accept incoming connections.void
bind(SocketAddress... addresses)
Binds to the specified local addresses and start to accept incoming connections.void
bind(SocketAddress firstLocalAddress, SocketAddress... addresses)
Binds to the specified local addresses and start to accept incoming connections.protected abstract Set<SocketAddress>
bindInternal(List<? extends SocketAddress> localAddresses)
Starts the acceptor, and register the given addressesSocketAddress
getDefaultLocalAddress()
Returns the default local address to bind when no argument is specified inIoAcceptor.bind()
method.List<SocketAddress>
getDefaultLocalAddresses()
Returns aList
of the default local addresses to bind when no argument is specified inIoAcceptor.bind()
method.SocketAddress
getLocalAddress()
Returns the local address which is bound currently.Set<SocketAddress>
getLocalAddresses()
Returns aSet
of the local addresses which are bound currently.boolean
isCloseOnDeactivation()
Returnstrue
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).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).void
setDefaultLocalAddress(SocketAddress localAddress)
Sets the default local address to bind when no argument is specified inIoAcceptor.bind()
method.void
setDefaultLocalAddresses(Iterable<? extends SocketAddress> localAddresses)
Sets the default local addresses to bind when no argument is specified inIoAcceptor.bind()
method.void
setDefaultLocalAddresses(SocketAddress firstLocalAddress, SocketAddress... otherLocalAddresses)
Sets the default local addresses to bind when no argument is specified inIoAcceptor.bind()
method.void
setDefaultLocalAddresses(List<? extends SocketAddress> localAddresses)
Sets the default local addresses to bind when no argument is specified inIoAcceptor.bind()
method.String
toString()
void
unbind()
Unbinds from all local addresses that this service is bound to and stops to accept incoming connections.void
unbind(Iterable<? extends SocketAddress> localAddresses)
Unbinds from the specified local addresses and stop to accept incoming connections.void
unbind(SocketAddress localAddress)
Unbinds from the specified local address and stop to accept incoming connections.void
unbind(SocketAddress firstLocalAddress, SocketAddress... otherLocalAddresses)
Unbinds from the specified local addresses and stop to accept incoming connections.protected abstract void
unbind0(List<? extends SocketAddress> localAddresses)
Implement this method to perform the actual unbind operation.-
Methods inherited from class org.apache.mina.core.service.AbstractIoService
addListener, broadcast, dispose, dispose, dispose0, executeWorker, executeWorker, finishSessionInitialization0, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getListeners, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionDataStructureFactory, getStatistics, initSession, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.mina.core.service.IoAcceptor
newSession
-
Methods inherited from interface org.apache.mina.core.service.IoService
addListener, broadcast, dispose, dispose, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionConfig, getSessionDataStructureFactory, getStatistics, getTransportMetadata, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory
-
-
-
-
Field Detail
-
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 Detail
-
AbstractIoAcceptor
protected AbstractIoAcceptor(IoSessionConfig sessionConfig, Executor executor)
Constructor forAbstractIoAcceptor
. You need to provide a default session configuration and anExecutor
for handling I/O events. If nullExecutor
is provided, a default one will be created usingExecutors.newCachedThreadPool()
.- Parameters:
sessionConfig
- the default configuration for the managedIoSession
executor
- theExecutor
used for handling execution of I/O events. Can benull
.- See Also:
AbstractIoService(IoSessionConfig, Executor)
-
-
Method Detail
-
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 interfaceIoAcceptor
- Returns:
- The bound LocalAddress
-
getLocalAddresses
public final Set<SocketAddress> getLocalAddresses()
Returns aSet
of the local addresses which are bound currently.- Specified by:
getLocalAddresses
in interfaceIoAcceptor
- Returns:
- The Set of bound LocalAddresses
-
getDefaultLocalAddress
public SocketAddress getDefaultLocalAddress()
Returns the default local address to bind when no argument is specified inIoAcceptor.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 inIoAcceptor.setDefaultLocalAddresses(List)
.- Specified by:
getDefaultLocalAddress
in interfaceIoAcceptor
- Returns:
- The default bound LocalAddress
-
setDefaultLocalAddress
public final void setDefaultLocalAddress(SocketAddress localAddress)
Sets the default local address to bind when no argument is specified inIoAcceptor.bind()
method. Please note that the default will not be used if any local address is specified.- Specified by:
setDefaultLocalAddress
in interfaceIoAcceptor
- Parameters:
localAddress
- The local addresses to bind the acceptor on
-
getDefaultLocalAddresses
public final List<SocketAddress> getDefaultLocalAddresses()
Returns aList
of the default local addresses to bind when no argument is specified inIoAcceptor.bind()
method. Please note that the default will not be used if any local address is specified.- Specified by:
getDefaultLocalAddresses
in interfaceIoAcceptor
- 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 inIoAcceptor.bind()
method. Please note that the default will not be used if any local address is specified.- Specified by:
setDefaultLocalAddresses
in interfaceIoAcceptor
- 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 inIoAcceptor.bind()
method. Please note that the default will not be used if any local address is specified.- Specified by:
setDefaultLocalAddresses
in interfaceIoAcceptor
- 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 inIoAcceptor.bind()
method. Please note that the default will not be used if any local address is specified.- Specified by:
setDefaultLocalAddresses
in interfaceIoAcceptor
- Parameters:
firstLocalAddress
- The first local address to bind the acceptor onotherLocalAddresses
- The other local addresses to bind the acceptor on
-
isCloseOnDeactivation
public final boolean isCloseOnDeactivation()
Returnstrue
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 interfaceIoAcceptor
- 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 istrue
.- Specified by:
setCloseOnDeactivation
in interfaceIoAcceptor
- 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 interfaceIoAcceptor
- 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 interfaceIoAcceptor
- 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 interfaceIoAcceptor
- 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 interfaceIoAcceptor
- Parameters:
firstLocalAddress
- The first address to bind toaddresses
- 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 interfaceIoAcceptor
- 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 ifdisconnectOnUnbind
property istrue
. This method returns silently if no local address is bound yet.- Specified by:
unbind
in interfaceIoAcceptor
-
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 ifdisconnectOnUnbind
property istrue
. This method returns silently if the default local address is not bound yet.- Specified by:
unbind
in interfaceIoAcceptor
- 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 ifdisconnectOnUnbind
property istrue
. This method returns silently if the default local addresses are not bound yet.- Specified by:
unbind
in interfaceIoAcceptor
- Parameters:
firstLocalAddress
- The first local address to be unbound fromotherLocalAddresses
- 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 ifdisconnectOnUnbind
property istrue
. This method returns silently if the default local addresses are not bound yet.- Specified by:
unbind
in interfaceIoAcceptor
- 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
-
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
-
-