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).- Author:
- Apache MINA Project
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.mina.core.polling.AbstractPollingIoConnector
AbstractPollingIoConnector.ConnectionRequest
-
Nested classes/interfaces inherited from class org.apache.mina.core.service.AbstractIoService
AbstractIoService.ServiceOperationFuture
-
-
Field Summary
-
Fields inherited from class org.apache.mina.core.service.AbstractIoService
disposalLock, LOGGER, sessionConfig
-
-
Constructor Summary
Constructors Constructor Description AprSocketConnector()
Create anAprSocketConnector
with default configuration (multiple thread model).AprSocketConnector(int processorCount)
Constructor forAprSocketConnector
with default configuration, and given number ofAprIoProcessor
for multithreading I/O operationsAprSocketConnector(Executor executor, IoProcessor<AprSession> processor)
Constructor forAprSocketConnector
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.AprSocketConnector(IoProcessor<AprSession> processor)
Constructor forAprSocketConnector
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 Iterator<Long>
allHandles()
Iterator
for all the client sockets polled for connection.protected void
close(Long handle)
Close a client socket.protected boolean
connect(Long handle, SocketAddress remoteAddress)
Connect a newly created client socket handle to a remoteSocketAddress
.protected void
destroy()
Destroy the polling system, will be called when thisIoConnector
implementation will be disposed.protected boolean
finishConnect(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.ConnectionRequest
getConnectionRequest(Long handle)
get theAbstractPollingIoConnector.ConnectionRequest
for a given client socket handleInetSocketAddress
getDefaultRemoteAddress()
SocketSessionConfig
getSessionConfig()
TransportMetadata
getTransportMetadata()
protected void
init()
Initialize the polling system, will be called at construction time.protected Long
newHandle(SocketAddress localAddress)
Create a new client socket handle from a localSocketAddress
protected AprSession
newSession(IoProcessor<AprSession> processor, Long handle)
Create a newIoSession
from a connected socket client handle.protected void
register(Long handle, AbstractPollingIoConnector.ConnectionRequest request)
Register a new client socket for connection, add it to connection pollingprotected int
select(int timeout)
Check for connected sockets, interrupt when at least a connection is processed (connected or failed to connect).protected Iterator<Long>
selectedHandles()
Iterator
for the set of client sockets found connected or failed to connect during the lastAbstractPollingIoConnector.select(int)
call.void
setDefaultRemoteAddress(InetSocketAddress defaultRemoteAddress)
Sets the default remote InetSocketAddress to connect to when no argument is specified inIoConnector.connect()
method.protected void
wakeup()
Interrupt theAbstractPollingIoConnector.select(int)
method.-
Methods inherited from class org.apache.mina.core.polling.AbstractPollingIoConnector
connect0, dispose0
-
Methods inherited from class org.apache.mina.core.service.AbstractIoConnector
connect, connect, connect, connect, connect, connect, finishSessionInitialization0, getConnectTimeout, getConnectTimeoutCheckInterval, getConnectTimeoutMillis, getDefaultLocalAddress, setConnectTimeout, setConnectTimeoutCheckInterval, setConnectTimeoutMillis, setDefaultLocalAddress, setDefaultRemoteAddress, toString
-
Methods inherited from class org.apache.mina.core.service.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, 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.IoConnector
connect, connect, connect, connect, connect, connect, getConnectTimeout, getConnectTimeoutMillis, getDefaultLocalAddress, setConnectTimeout, setConnectTimeoutMillis, setDefaultLocalAddress, setDefaultRemoteAddress
-
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
-
-
-
-
Constructor Detail
-
AprSocketConnector
public AprSocketConnector()
Create anAprSocketConnector
with default configuration (multiple thread model).
-
AprSocketConnector
public AprSocketConnector(int processorCount)
Constructor forAprSocketConnector
with default configuration, and given number ofAprIoProcessor
for multithreading I/O operations- Parameters:
processorCount
- the number of processor to create and place in aSimpleIoProcessorPool
-
AprSocketConnector
public AprSocketConnector(IoProcessor<AprSession> processor)
Constructor forAprSocketConnector
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
-
AprSocketConnector
public AprSocketConnector(Executor executor, IoProcessor<AprSession> processor)
Constructor forAprSocketConnector
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
-
-
Method Detail
-
init
protected void init() throws Exception
Initialize the polling system, will be called at construction time.- Specified by:
init
in classAbstractPollingIoConnector<AprSession,Long>
- Throws:
Exception
- any exception thrown by the underlying system calls
-
destroy
protected void destroy() throws Exception
Destroy the polling system, will be called when thisIoConnector
implementation will be disposed.- Specified by:
destroy
in classAbstractPollingIoConnector<AprSession,Long>
- Throws:
Exception
- any exception thrown by the underlying systems calls
-
allHandles
protected Iterator<Long> allHandles()
Iterator
for all the client sockets polled for connection.- Specified by:
allHandles
in classAbstractPollingIoConnector<AprSession,Long>
- Returns:
- the list of client sockets currently polled for connection
-
connect
protected boolean connect(Long handle, SocketAddress remoteAddress) throws Exception
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:
connect
in classAbstractPollingIoConnector<AprSession,Long>
- Parameters:
handle
- the client socket handleremoteAddress
- the remote address where to connect- Returns:
true
if a connection was established,false
if this client socket is in non-blocking mode and the connection operation is in progress- Throws:
Exception
- If the connect failed
-
getConnectionRequest
protected AbstractPollingIoConnector.ConnectionRequest getConnectionRequest(Long handle)
get theAbstractPollingIoConnector.ConnectionRequest
for a given client socket handle- Specified by:
getConnectionRequest
in classAbstractPollingIoConnector<AprSession,Long>
- Parameters:
handle
- the socket client handle- Returns:
- the connection request if the socket is connecting otherwise
null
-
close
protected void close(Long handle) throws Exception
Close a client socket.- Specified by:
close
in classAbstractPollingIoConnector<AprSession,Long>
- Parameters:
handle
- the client socket- Throws:
Exception
- any exception thrown by the underlying systems calls
-
finishConnect
protected boolean finishConnect(Long handle) throws Exception
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:
finishConnect
in 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
protected Long newHandle(SocketAddress localAddress) throws Exception
Create a new client socket handle from a localSocketAddress
- Specified by:
newHandle
in 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
protected AprSession newSession(IoProcessor<AprSession> processor, Long handle) throws Exception
Create a newIoSession
from a connected socket client handle. Will assign the createdIoSession
to the givenIoProcessor
for managing future I/O events.- Specified by:
newSession
in 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.ConnectionRequest request) throws Exception
Register a new client socket for connection, add it to connection polling- Specified by:
register
in classAbstractPollingIoConnector<AprSession,Long>
- Parameters:
handle
- client socket handlerequest
- the associatedAbstractPollingIoConnector.ConnectionRequest
- Throws:
Exception
- any exception thrown by the underlying systems calls
-
select
protected int select(int timeout) throws Exception
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:
select
in 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
protected Iterator<Long> selectedHandles()
Iterator
for the set of client sockets found connected or failed to connect during the lastAbstractPollingIoConnector.select(int)
call.- Specified by:
selectedHandles
in 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:
wakeup
in classAbstractPollingIoConnector<AprSession,Long>
-
getTransportMetadata
public TransportMetadata getTransportMetadata()
- Specified by:
getTransportMetadata
in interfaceIoService
- Returns:
- the
TransportMetadata
that this service runs on.
-
getSessionConfig
public SocketSessionConfig getSessionConfig()
- Specified by:
getSessionConfig
in interfaceIoService
- Specified by:
getSessionConfig
in interfaceSocketConnector
- Returns:
- the default configuration of the new SocketSessions created by this connect service.
-
getDefaultRemoteAddress
public InetSocketAddress getDefaultRemoteAddress()
- Specified by:
getDefaultRemoteAddress
in interfaceIoConnector
- Specified by:
getDefaultRemoteAddress
in interfaceSocketConnector
- Overrides:
getDefaultRemoteAddress
in classAbstractIoConnector
- Returns:
- the default remote address to connect to when no argument
is specified in
IoConnector.connect()
method.
-
setDefaultRemoteAddress
public void setDefaultRemoteAddress(InetSocketAddress defaultRemoteAddress)
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:
setDefaultRemoteAddress
in interfaceSocketConnector
- Parameters:
defaultRemoteAddress
- The remote address to set
-
-