Class NioSocketConnector
java.lang.Object
org.apache.mina.core.service.AbstractIoService
org.apache.mina.core.service.AbstractIoConnector
org.apache.mina.core.polling.AbstractPollingIoConnector<NioSession, SocketChannel>
org.apache.mina.transport.socket.nio.NioSocketConnector
- All Implemented Interfaces:
IoConnector, IoService, SocketConnector
public final class NioSocketConnector
extends AbstractPollingIoConnector<NioSession, SocketChannel>
implements SocketConnector
IoConnector for socket transport (TCP/IP).-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class AbstractPollingIoConnector
AbstractPollingIoConnector.ConnectionRequestNested classes/interfaces inherited from class AbstractIoService
AbstractIoService.ServiceOperationFuture -
Field Summary
FieldsFields inherited from class AbstractIoService
disposalLock, LOGGER, sessionConfig -
Constructor Summary
ConstructorsConstructorDescriptionConstructor forNioSocketConnectorwith default configuration (multiple thread model).NioSocketConnector(int processorCount) Constructor forNioSocketConnectorwith default configuration, and given number ofNioProcessorfor multithreading I/O operationsNioSocketConnector(Class<? extends IoProcessor<NioSession>> processorClass) Constructor forNioSocketConnectorwith default configuration with default configuration which will use a built-in thread pool executor to manage the default number of processor instances.NioSocketConnector(Class<? extends IoProcessor<NioSession>> processorClass, int processorCount) Constructor forNioSocketConnectorwith default configuration which will use a built-in thread pool executor to manage the given number of processor instances.NioSocketConnector(Executor executor, IoProcessor<NioSession> processor) Constructor forNioSocketConnectorwith a givenExecutorfor handling connection events and a givenIoProcessorfor handling I/O events, useful for sharing the same processor and executor over multipleIoServiceof the same type.NioSocketConnector(IoProcessor<NioSession> processor) Constructor forNioSocketConnectorwith default configuration but a specificIoProcessor, useful for sharing the same processor over multipleIoServiceof the same type. -
Method Summary
Modifier and TypeMethodDescriptionprotected Iterator<SocketChannel> Iteratorfor all the client sockets polled for connection.protected voidclose(SocketChannel handle) Close a client socket.protected booleanconnect(SocketChannel handle, SocketAddress remoteAddress) Connect a newly created client socket handle to a remoteSocketAddress.protected voiddestroy()Destroy the polling system, will be called when thisIoConnectorimplementation will be disposed.protected booleanfinishConnect(SocketChannel handle) Finish the connection process of a client socket after it was marked as ready to process by theAbstractPollingIoConnector.select(int)call.getConnectionRequest(SocketChannel handle) get theAbstractPollingIoConnector<S extends AbstractIoSession, H>.ConnectionRequestfor a given client socket handleprotected voidinit()Initialize the polling system, will be called at construction time.protected SocketChannelnewHandle(SocketAddress localAddress) Create a new client socket handle from a localSocketAddressprotected NioSessionnewSession(IoProcessor<NioSession> processor, SocketChannel handle) Create a newIoSessionfrom a connected socket client handle.protected voidregister(SocketChannel handle, AbstractPollingIoConnector<NioSession, SocketChannel>.ConnectionRequest request) Register a new client socket for connection, add it to connection pollingprotected intselect(int timeout) Check for connected sockets, interrupt when at least a connection is processed (connected or failed to connect).protected Iterator<SocketChannel> Iteratorfor the set of client sockets found connected or failed to connect during the lastAbstractPollingIoConnector.select(int)call.voidsetDefaultRemoteAddress(InetSocketAddress defaultRemoteAddress) Sets the default remote InetSocketAddress to connect to when no argument is specified inIoConnector.connect()method.protected voidwakeup()Interrupt theAbstractPollingIoConnector.select(int)method.Methods inherited from class AbstractPollingIoConnector
connect0, dispose0Methods inherited from class AbstractIoConnector
connect, connect, connect, connect, connect, connect, finishSessionInitialization0, getConnectTimeout, getConnectTimeoutCheckInterval, getConnectTimeoutMillis, getDefaultLocalAddress, setConnectTimeout, setConnectTimeoutCheckInterval, setConnectTimeoutMillis, setDefaultLocalAddress, setDefaultRemoteAddress, toStringMethods inherited from class AbstractIoService
addListener, broadcast, dispose, dispose, executeWorker, executeWorker, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getListeners, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionDataStructureFactory, getStatistics, initSession, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactoryMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface IoConnector
connect, connect, connect, connect, connect, connect, getConnectTimeout, getConnectTimeoutMillis, getDefaultLocalAddress, setConnectTimeout, setConnectTimeoutMillis, setDefaultLocalAddress, setDefaultRemoteAddressMethods inherited from interface IoService
addListener, broadcast, dispose, dispose, getActivationTime, getFilterChain, getFilterChainBuilder, getHandler, getManagedSessionCount, getManagedSessions, getScheduledWriteBytes, getScheduledWriteMessages, getSessionDataStructureFactory, getStatistics, isActive, isDisposed, isDisposing, removeListener, setFilterChainBuilder, setHandler, setSessionDataStructureFactory
-
Field Details
-
selector
-
-
Constructor Details
-
NioSocketConnector
public NioSocketConnector()Constructor forNioSocketConnectorwith default configuration (multiple thread model). -
NioSocketConnector
public NioSocketConnector(int processorCount) Constructor forNioSocketConnectorwith default configuration, and given number ofNioProcessorfor multithreading I/O operations- Parameters:
processorCount- the number of processor to create and place in aSimpleIoProcessorPool
-
NioSocketConnector
Constructor forNioSocketConnectorwith default configuration but a specificIoProcessor, useful for sharing the same processor over multipleIoServiceof the same type.- Parameters:
processor- the processor to use for managing I/O events
-
NioSocketConnector
Constructor forNioSocketConnectorwith a givenExecutorfor handling connection events and a givenIoProcessorfor handling I/O events, useful for sharing the same processor and executor over multipleIoServiceof the same type.- Parameters:
executor- the executor for connectionprocessor- the processor for I/O operations
-
NioSocketConnector
public NioSocketConnector(Class<? extends IoProcessor<NioSession>> processorClass, int processorCount) Constructor forNioSocketConnectorwith default configuration which will use a built-in thread pool executor to manage the given number of processor instances. The processor class must have a constructor that accepts ExecutorService or Executor as its single argument, or, failing that, a no-arg constructor.- Parameters:
processorClass- the processor class.processorCount- the number of processors to instantiate.- Since:
- 2.0.0-M4
- See Also:
-
NioSocketConnector
Constructor forNioSocketConnectorwith default configuration with default configuration which will use a built-in thread pool executor to manage the default number of processor instances. The processor class must have a constructor that accepts ExecutorService or Executor as its single argument, or, failing that, a no-arg constructor. The default number of instances is equal to the number of processor cores in the system, plus one.- Parameters:
processorClass- the processor class.- Since:
- 2.0.0-M4
- See Also:
-
-
Method Details
-
init
Initialize the polling system, will be called at construction time.- Specified by:
initin classAbstractPollingIoConnector<NioSession, SocketChannel>- Throws:
Exception- any exception thrown by the underlying system calls
-
destroy
Destroy the polling system, will be called when thisIoConnectorimplementation will be disposed.- Specified by:
destroyin classAbstractPollingIoConnector<NioSession, SocketChannel>- Throws:
Exception- any exception thrown by the underlying systems calls
-
getTransportMetadata
- Specified by:
getTransportMetadatain interfaceIoService- Returns:
- the
TransportMetadatathat this service runs on.
-
getSessionConfig
- Specified by:
getSessionConfigin interfaceIoService- Specified by:
getSessionConfigin interfaceSocketConnector- Returns:
- the default configuration of the new
IoSessions created by this service.
-
getDefaultRemoteAddress
- Specified by:
getDefaultRemoteAddressin interfaceIoConnector- Specified by:
getDefaultRemoteAddressin interfaceSocketConnector- Overrides:
getDefaultRemoteAddressin classAbstractIoConnector- Returns:
- the default remote address to connect to when no argument
is specified in
IoConnector.connect()method.
-
setDefaultRemoteAddress
Sets the default remote InetSocketAddress to connect to when no argument is specified inIoConnector.connect()method. This method overrides theIoConnector.setDefaultRemoteAddress(java.net.SocketAddress)method.- Specified by:
setDefaultRemoteAddressin interfaceSocketConnector- Parameters:
defaultRemoteAddress- The remote address to set
-
allHandles
Iteratorfor all the client sockets polled for connection.- Specified by:
allHandlesin classAbstractPollingIoConnector<NioSession, SocketChannel>- Returns:
- the list of client sockets currently polled for connection
-
connect
Connect a newly created client socket handle to a remoteSocketAddress. This operation is non-blocking, so at end of the call the socket can be still in connection process.- Specified by:
connectin classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
handle- the client socket handleremoteAddress- the remote address where to connect- Returns:
trueif a connection was established,falseif this client socket is in non-blocking mode and the connection operation is in progress- Throws:
Exception- If the connect failed
-
getConnectionRequest
protected AbstractPollingIoConnector<NioSession, SocketChannel>.ConnectionRequest getConnectionRequest(SocketChannel handle) get theAbstractPollingIoConnector<S extends AbstractIoSession, H>.ConnectionRequestfor a given client socket handle- Specified by:
getConnectionRequestin classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
handle- the socket client handle- Returns:
- the connection request if the socket is connecting otherwise
null
-
close
Close a client socket.- Specified by:
closein classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
handle- the client socket- Throws:
Exception- any exception thrown by the underlying systems calls
-
finishConnect
Finish the connection process of a client socket after it was marked as ready to process by theAbstractPollingIoConnector.select(int)call. The socket will be connected or reported as connection failed.- Specified by:
finishConnectin classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
handle- the client socket handle to finish to connect- Returns:
- true if the socket is connected
- Throws:
Exception- any exception thrown by the underlying systems calls
-
newHandle
Create a new client socket handle from a localSocketAddress- Specified by:
newHandlein classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
localAddress- the socket address for binding the new client socket- Returns:
- a new client socket handle
- Throws:
Exception- any exception thrown by the underlying systems calls
-
newSession
Create a newIoSessionfrom a connected socket client handle. Will assign the createdIoSessionto the givenIoProcessorfor managing future I/O events.- Specified by:
newSessionin classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
processor- the processor in charge of this sessionhandle- the newly connected client socket handle- Returns:
- a new
IoSession
-
register
protected void register(SocketChannel handle, AbstractPollingIoConnector<NioSession, SocketChannel>.ConnectionRequest request) throws Exception Register a new client socket for connection, add it to connection polling- Specified by:
registerin classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
handle- client socket handlerequest- the associatedAbstractPollingIoConnector<S extends AbstractIoSession, H>.ConnectionRequest- Throws:
Exception- any exception thrown by the underlying systems calls
-
select
Check for connected sockets, interrupt when at least a connection is processed (connected or failed to connect). All the client socket descriptors processed need to be returned byAbstractPollingIoConnector.selectedHandles()- Specified by:
selectin classAbstractPollingIoConnector<NioSession, SocketChannel>- Parameters:
timeout- The timeout for the select() method- Returns:
- The number of socket having received some data
- Throws:
Exception- any exception thrown by the underlying systems calls
-
selectedHandles
Iteratorfor the set of client sockets found connected or failed to connect during the lastAbstractPollingIoConnector.select(int)call.- Specified by:
selectedHandlesin classAbstractPollingIoConnector<NioSession, SocketChannel>- Returns:
- the list of client socket handles to process
-
wakeup
protected void wakeup()Interrupt theAbstractPollingIoConnector.select(int)method. Used when the poll set need to be modified.- Specified by:
wakeupin classAbstractPollingIoConnector<NioSession, SocketChannel>
-