Class NioSocketAcceptor
- java.lang.Object
-
- org.apache.mina.core.service.AbstractIoService
-
- org.apache.mina.core.service.AbstractIoAcceptor
-
- org.apache.mina.core.polling.AbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
-
- org.apache.mina.transport.socket.nio.NioSocketAcceptor
-
- All Implemented Interfaces:
IoAcceptor
,IoService
,SocketAcceptor
public class NioSocketAcceptor extends AbstractPollingIoAcceptor<NioSession,ServerSocketChannel> implements SocketAcceptor
IoAcceptor
for socket transport (TCP/IP). This class handles incoming TCP/IP based socket connections.- Author:
- Apache MINA Project
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.mina.core.service.AbstractIoAcceptor
AbstractIoAcceptor.AcceptorOperationFuture
-
Nested classes/interfaces inherited from class org.apache.mina.core.service.AbstractIoService
AbstractIoService.ServiceOperationFuture
-
-
Field Summary
Fields Modifier and Type Field Description protected Selector
selector
protected SelectorProvider
selectorProvider
-
Fields inherited from class org.apache.mina.core.polling.AbstractPollingIoAcceptor
backlog, reuseAddress
-
Fields inherited from class org.apache.mina.core.service.AbstractIoAcceptor
bindLock
-
Fields inherited from class org.apache.mina.core.service.AbstractIoService
disposalLock, LOGGER, sessionConfig
-
-
Constructor Summary
Constructors Constructor Description NioSocketAcceptor()
Constructor forNioSocketAcceptor
using default parameters (multiple thread model).NioSocketAcceptor(int processorCount)
Constructor forNioSocketAcceptor
using default parameters, and given number ofNioProcessor
for multithreading I/O operations.NioSocketAcceptor(int processorCount, SelectorProvider selectorProvider)
Constructor forNioSocketAcceptor
using default parameters, and given number ofNioProcessor
for multithreading I/O operations, and a custom SelectorProvider for NIONioSocketAcceptor(Executor executor, IoProcessor<NioSession> processor)
Constructor forNioSocketAcceptor
with a givenExecutor
for handling connection events and a givenIoProcessor
for handling I/O events, useful for sharing the same processor and executor over multipleIoService
of the same type.NioSocketAcceptor(IoProcessor<NioSession> processor)
Constructor forNioSocketAcceptor
with default configuration but a specificIoProcessor
, useful for sharing the same processor over multipleIoService
of the same type.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected NioSession
accept(IoProcessor<NioSession> processor, ServerSocketChannel handle)
Accept a client connection for a server socket and return a newIoSession
associated with the givenIoProcessor
protected void
close(ServerSocketChannel handle)
Close a server socket.protected void
destroy()
Destroy the polling system, will be called when thisIoAcceptor
implementation will be disposed.InetSocketAddress
getDefaultLocalAddress()
Returns the default local address to bind when no argument is specified inIoAcceptor.bind()
method.InetSocketAddress
getLocalAddress()
Returns the local address which is bound currently.TransportMetadata
getTransportMetadata()
protected void
handleUnbound(Collection<AbstractIoAcceptor.AcceptorOperationFuture> unboundFutures)
Processes the futures for executed unbindings, marking all futures as done.protected void
init()
Initialize the polling system, will be called at construction time.protected void
init(SelectorProvider selectorProvider)
Initialize the polling system, will be called at construction time.protected SocketAddress
localAddress(ServerSocketChannel handle)
Get the local address associated with a given server socketprotected ServerSocketChannel
open(SocketAddress localAddress)
Open a server socket for a given local address.protected int
select()
Check if we have at least one key whose corresponding channels is ready for I/O operations.protected Iterator<ServerSocketChannel>
selectedHandles()
Iterator
for the set of server sockets found with acceptable incoming connections during the lastAbstractPollingIoAcceptor.select()
call.void
setDefaultLocalAddress(InetSocketAddress localAddress)
Sets the default local InetSocketAddress to bind when no argument is specified inIoAcceptor.bind()
method.protected void
wakeup()
Interrupt theAbstractPollingIoAcceptor.select()
method.-
Methods inherited from class org.apache.mina.core.polling.AbstractPollingIoAcceptor
bindInternal, bindRequestAdded, dispose0, getBacklog, getSessionConfig, hasUnbindings, isReuseAddress, newSession, processHandles, setBacklog, setReuseAddress, unbind0
-
Methods inherited from class org.apache.mina.core.service.AbstractIoAcceptor
bind, bind, bind, bind, bind, getDefaultLocalAddresses, getLocalAddresses, isCloseOnDeactivation, setCloseOnDeactivation, setDefaultLocalAddress, setDefaultLocalAddresses, setDefaultLocalAddresses, setDefaultLocalAddresses, toString, unbind, unbind, unbind, unbind
-
Methods inherited from class org.apache.mina.core.service.AbstractIoService
addListener, broadcast, dispose, dispose, 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
bind, bind, bind, bind, bind, getDefaultLocalAddresses, getLocalAddresses, isCloseOnDeactivation, newSession, setCloseOnDeactivation, setDefaultLocalAddress, setDefaultLocalAddresses, setDefaultLocalAddresses, setDefaultLocalAddresses, unbind, unbind, unbind, unbind
-
Methods inherited from interface org.apache.mina.core.service.IoService
addListener, broadcast, dispose, dispose, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionDataStructureFactory, getStatistics, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory
-
Methods inherited from interface org.apache.mina.transport.socket.SocketAcceptor
getBacklog, getSessionConfig, isReuseAddress, setBacklog, setReuseAddress
-
-
-
-
Field Detail
-
selector
protected volatile Selector selector
-
selectorProvider
protected volatile SelectorProvider selectorProvider
-
-
Constructor Detail
-
NioSocketAcceptor
public NioSocketAcceptor()
Constructor forNioSocketAcceptor
using default parameters (multiple thread model).
-
NioSocketAcceptor
public NioSocketAcceptor(int processorCount)
Constructor forNioSocketAcceptor
using default parameters, and given number ofNioProcessor
for multithreading I/O operations.- Parameters:
processorCount
- the number of processor to create and place in aSimpleIoProcessorPool
-
NioSocketAcceptor
public NioSocketAcceptor(IoProcessor<NioSession> processor)
Constructor forNioSocketAcceptor
with default configuration but a specificIoProcessor
, useful for sharing the same processor over multipleIoService
of the same type.- Parameters:
processor
- the processor to use for managing I/O events
-
NioSocketAcceptor
public NioSocketAcceptor(Executor executor, IoProcessor<NioSession> processor)
Constructor forNioSocketAcceptor
with a givenExecutor
for handling connection events and a givenIoProcessor
for handling I/O events, useful for sharing the same processor and executor over multipleIoService
of the same type.- Parameters:
executor
- the executor for connectionprocessor
- the processor for I/O operations
-
NioSocketAcceptor
public NioSocketAcceptor(int processorCount, SelectorProvider selectorProvider)
Constructor forNioSocketAcceptor
using default parameters, and given number ofNioProcessor
for multithreading I/O operations, and a custom SelectorProvider for NIO- Parameters:
processorCount
- the number of processor to create and place in aselectorProvider
- teh SelectorProvider to useSimpleIoProcessorPool
-
-
Method Detail
-
init
protected void init() throws Exception
Initialize the polling system, will be called at construction time.- Specified by:
init
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Throws:
Exception
- any exception thrown by the underlying system calls
-
init
protected void init(SelectorProvider selectorProvider) throws Exception
Initialize the polling system, will be called at construction time.- Specified by:
init
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Parameters:
selectorProvider
- The Selector Provider that will be used by this polling acceptor- Throws:
Exception
- any exception thrown by the underlying system calls
-
handleUnbound
protected void handleUnbound(Collection<AbstractIoAcceptor.AcceptorOperationFuture> unboundFutures) throws Exception
Processes the futures for executed unbindings, marking all futures as done.- Overrides:
handleUnbound
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Parameters:
unboundFutures
- describing the unbindings- Throws:
Exception
- on errors
-
destroy
protected void destroy() throws Exception
Destroy the polling system, will be called when thisIoAcceptor
implementation will be disposed.- Specified by:
destroy
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Throws:
Exception
- any exception thrown by the underlying systems calls
-
getTransportMetadata
public TransportMetadata getTransportMetadata()
- Specified by:
getTransportMetadata
in interfaceIoService
- Returns:
- the
TransportMetadata
that this service runs on.
-
getLocalAddress
public InetSocketAddress 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
- Specified by:
getLocalAddress
in interfaceSocketAcceptor
- Overrides:
getLocalAddress
in classAbstractIoAcceptor
- Returns:
- The bound LocalAddress
-
getDefaultLocalAddress
public InetSocketAddress 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
- Specified by:
getDefaultLocalAddress
in interfaceSocketAcceptor
- Overrides:
getDefaultLocalAddress
in classAbstractIoAcceptor
- Returns:
- The default bound LocalAddress
-
setDefaultLocalAddress
public void setDefaultLocalAddress(InetSocketAddress localAddress)
Sets the default local InetSocketAddress to bind when no argument is specified inIoAcceptor.bind()
method. Please note that the default will not be used if any local InetSocketAddress is specified. This method overrides theIoAcceptor.setDefaultLocalAddress(java.net.SocketAddress)
method.- Specified by:
setDefaultLocalAddress
in interfaceSocketAcceptor
- Parameters:
localAddress
- The local address
-
accept
protected NioSession accept(IoProcessor<NioSession> processor, ServerSocketChannel handle) throws Exception
Accept a client connection for a server socket and return a newIoSession
associated with the givenIoProcessor
- Specified by:
accept
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Parameters:
processor
- theIoProcessor
to associate with theIoSession
handle
- the server handle- Returns:
- the created
IoSession
- Throws:
Exception
- any exception thrown by the underlying systems calls
-
open
protected ServerSocketChannel open(SocketAddress localAddress) throws Exception
Open a server socket for a given local address.- Specified by:
open
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Parameters:
localAddress
- the associated local address- Returns:
- the opened server socket
- Throws:
Exception
- any exception thrown by the underlying systems calls
-
localAddress
protected SocketAddress localAddress(ServerSocketChannel handle) throws Exception
Get the local address associated with a given server socket- Specified by:
localAddress
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Parameters:
handle
- the server socket- Returns:
- the local
SocketAddress
associated with this handle - Throws:
Exception
- any exception thrown by the underlying systems calls
-
select
protected int select() throws Exception
Check if we have at least one key whose corresponding channels is ready for I/O operations. This method performs a blocking selection operation. It returns only after at least one channel is selected, this selector's wakeup method is invoked, or the current thread is interrupted, whichever comes first.- Specified by:
select
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Returns:
- The number of keys having their ready-operation set updated
- Throws:
IOException
- If an I/O error occursException
- any exception thrown by the underlying systems calls
-
selectedHandles
protected Iterator<ServerSocketChannel> selectedHandles()
Iterator
for the set of server sockets found with acceptable incoming connections during the lastAbstractPollingIoAcceptor.select()
call.- Specified by:
selectedHandles
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Returns:
- the list of server handles ready
-
close
protected void close(ServerSocketChannel handle) throws Exception
Close a server socket.- Specified by:
close
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
- Parameters:
handle
- the server socket- Throws:
Exception
- any exception thrown by the underlying systems calls
-
wakeup
protected void wakeup()
Interrupt theAbstractPollingIoAcceptor.select()
method. Used when the poll set need to be modified.- Specified by:
wakeup
in classAbstractPollingIoAcceptor<NioSession,ServerSocketChannel>
-
-