Class AprSocketConnector
java.lang.Object
org.apache.mina.core.service.AbstractIoService
org.apache.mina.core.service.AbstractIoConnector
org.apache.mina.core.polling.AbstractPollingIoConnector<AprSession, Long>
org.apache.mina.transport.socket.apr.AprSocketConnector
- All Implemented Interfaces:
IoConnector, IoService, SocketConnector
public final class AprSocketConnector
extends AbstractPollingIoConnector<AprSession, Long>
implements SocketConnector
IoConnector for APR based socket transport (TCP/IP).-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractPollingIoConnector
AbstractPollingIoConnector.ConnectionRequestNested classes/interfaces inherited from class AbstractIoService
AbstractIoService.ServiceOperationFuture -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final intThis constant is deduced from the APR code.private ByteBufferprivate final long[]private longprivate static final intprivate longprivate final Map<Long, AbstractPollingIoConnector<AprSession, Long>.ConnectionRequest> private booleanprivate final Objectprivate longFields inherited from class AbstractIoService
disposalLock, LOGGER, sessionConfig -
Constructor Summary
ConstructorsConstructorDescriptionCreate anAprSocketConnectorwith default configuration (multiple thread model).AprSocketConnector(int processorCount) Constructor forAprSocketConnectorwith default configuration, and given number ofAprIoProcessorfor multithreading I/O operationsAprSocketConnector(Executor executor, IoProcessor<AprSession> processor) Constructor forAprSocketConnectorwith 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.AprSocketConnector(IoProcessor<AprSession> processor) Constructor forAprSocketConnectorwith default configuration but a specificIoProcessor, useful for sharing the same processor over multipleIoServiceof the same type. -
Method Summary
Modifier and TypeMethodDescriptionIteratorfor all the client sockets polled for connection.protected voidClose a client socket.protected booleanconnect(Long 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(Long handle) Finish the connection process of a client socket after it was marked as ready to process by theAbstractPollingIoConnector.select(int)call.protected AbstractPollingIoConnector<AprSession, Long>.ConnectionRequestgetConnectionRequest(Long 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 LongnewHandle(SocketAddress localAddress) Create a new client socket handle from a localSocketAddressprotected AprSessionnewSession(IoProcessor<AprSession> processor, Long handle) Create a newIoSessionfrom a connected socket client handle.protected voidregister(Long handle, AbstractPollingIoConnector<AprSession, Long>.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).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.private voidthrowException(int code) transform an APR error number in a more fancy exceptionprotected 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
-
APR_TIMEUP_ERROR
private static final int APR_TIMEUP_ERRORThis constant is deduced from the APR code. It is used when the timeout has expired while doing a poll() operation.- See Also:
-
POLLSET_SIZE
private static final int POLLSET_SIZE- See Also:
-
requests
-
wakeupLock
-
wakeupSocket
private volatile long wakeupSocket -
toBeWakenUp
private volatile boolean toBeWakenUp -
pool
private volatile long pool -
pollset
private volatile long pollset -
polledSockets
private final long[] polledSockets -
polledHandles
-
failedHandles
-
dummyBuffer
-
-
Constructor Details
-
AprSocketConnector
public AprSocketConnector()Create anAprSocketConnectorwith default configuration (multiple thread model). -
AprSocketConnector
public AprSocketConnector(int processorCount) Constructor forAprSocketConnectorwith default configuration, and given number ofAprIoProcessorfor multithreading I/O operations- Parameters:
processorCount- the number of processor to create and place in aSimpleIoProcessorPool
-
AprSocketConnector
Constructor forAprSocketConnectorwith 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
-
AprSocketConnector
Constructor forAprSocketConnectorwith 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
-
-
Method Details
-
init
Initialize the polling system, will be called at construction time.- Specified by:
initin classAbstractPollingIoConnector<AprSession, Long>- 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<AprSession, Long>- Throws:
Exception- any exception thrown by the underlying systems calls
-
allHandles
Iteratorfor all the client sockets polled for connection.- Specified by:
allHandlesin classAbstractPollingIoConnector<AprSession, Long>- 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<AprSession, Long>- 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<AprSession, Long>.ConnectionRequest getConnectionRequest(Long handle) get theAbstractPollingIoConnector<S extends AbstractIoSession, H>.ConnectionRequestfor a given client socket handle- Specified by:
getConnectionRequestin classAbstractPollingIoConnector<AprSession, Long>- 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<AprSession, Long>- 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<AprSession, Long>- 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<AprSession, Long>- 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<AprSession, Long>- Parameters:
processor- the processor in charge of this sessionhandle- the newly connected client socket handle- Returns:
- a new
IoSession - Throws:
Exception- any exception thrown by the underlying systems calls
-
register
protected void register(Long handle, AbstractPollingIoConnector<AprSession, Long>.ConnectionRequest request) throws Exception Register a new client socket for connection, add it to connection polling- Specified by:
registerin classAbstractPollingIoConnector<AprSession, Long>- 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<AprSession, Long>- 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<AprSession, Long>- 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<AprSession, Long>
-
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
-
throwException
transform an APR error number in a more fancy exception- Parameters:
code- APR error code- Throws:
IOException- the produced exception for the given APR error number
-