org.apache.mina.transport.socket.nio
Class NioSocketConnector

java.lang.Object
  extended by org.apache.mina.core.service.AbstractIoService
      extended by org.apache.mina.core.service.AbstractIoConnector
          extended by org.apache.mina.core.polling.AbstractPollingIoConnector<NioSession,SocketChannel>
              extended by 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).

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
 
Constructor Summary
NioSocketConnector()
          Constructor for NioSocketConnector with default configuration (multiple thread model).
NioSocketConnector(Class<? extends IoProcessor<NioSession>> processorClass)
          Constructor for NioSocketConnector with 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 for NioSocketConnector with 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 for NioSocketConnector with a given Executor for handling connection events and a given IoProcessor for handling I/O events, useful for sharing the same processor and executor over multiple IoService of the same type.
NioSocketConnector(int processorCount)
          Constructor for NioSocketConnector with default configuration, and given number of NioProcessor for multithreading I/O operations
NioSocketConnector(IoProcessor<NioSession> processor)
          Constructor for NioSocketConnector with default configuration but a specific IoProcessor, useful for sharing the same processor over multiple IoService of the same type.
 
Method Summary
protected  Iterator<SocketChannel> allHandles()
          Iterator for all the client sockets polled for connection.
protected  void close(SocketChannel handle)
          Close a client socket.
protected  boolean connect(SocketChannel handle, SocketAddress remoteAddress)
          Connect a newly created client socket handle to a remote SocketAddress.
protected  void destroy()
          Destroy the polling system, will be called when this IoConnector implementation will be disposed.
protected  boolean finishConnect(SocketChannel handle)
          Finish the connection process of a client socket after it was marked as ready to process by the AbstractPollingIoConnector.select(int) call.
protected  AbstractPollingIoConnector.ConnectionRequest getConnectionRequest(SocketChannel handle)
          get the AbstractPollingIoConnector.ConnectionRequest for a given client socket handle
 InetSocketAddress getDefaultRemoteAddress()
          Returns the default remote address to connect to when no argument is specified in IoConnector.connect() method.
 SocketSessionConfig getSessionConfig()
          Returns the default configuration of the new IoSessions created by this service.
 TransportMetadata getTransportMetadata()
          Returns the TransportMetadata that this service runs on.
protected  void init()
          Initialize the polling system, will be called at construction time.
protected  SocketChannel newHandle(SocketAddress localAddress)
          Create a new client socket handle from a local SocketAddress
protected  NioSession newSession(IoProcessor<NioSession> processor, SocketChannel handle)
          Create a new IoSession from a connected socket client handle.
protected  void register(SocketChannel handle, AbstractPollingIoConnector.ConnectionRequest request)
          Register a new client socket for connection, add it to connection polling
protected  int select(int timeout)
          Check for connected sockets, interrupt when at least a connection is processed (connected or failed to connect).
protected  Iterator<SocketChannel> selectedHandles()
          Iterator for the set of client sockets found connected or failed to connect during the last #select() call.
 void setDefaultRemoteAddress(InetSocketAddress defaultRemoteAddress)
          TODO : add documentation
protected  void wakeup()
          Interrupt the #select() 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, setConnectTimeout, setConnectTimeoutCheckInterval, setConnectTimeoutMillis, 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, setConnectTimeout, setConnectTimeoutMillis, 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

NioSocketConnector

public NioSocketConnector()
Constructor for NioSocketConnector with default configuration (multiple thread model).


NioSocketConnector

public NioSocketConnector(int processorCount)
Constructor for NioSocketConnector with default configuration, and given number of NioProcessor for multithreading I/O operations

Parameters:
processorCount - the number of processor to create and place in a SimpleIoProcessorPool

NioSocketConnector

public NioSocketConnector(IoProcessor<NioSession> processor)
Constructor for NioSocketConnector with default configuration but a specific IoProcessor, useful for sharing the same processor over multiple IoService of the same type.

Parameters:
processor - the processor to use for managing I/O events

NioSocketConnector

public NioSocketConnector(Executor executor,
                          IoProcessor<NioSession> processor)
Constructor for NioSocketConnector with a given Executor for handling connection events and a given IoProcessor for handling I/O events, useful for sharing the same processor and executor over multiple IoService of the same type.

Parameters:
executor - the executor for connection
processor - the processor for I/O operations

NioSocketConnector

public NioSocketConnector(Class<? extends IoProcessor<NioSession>> processorClass,
                          int processorCount)
Constructor for NioSocketConnector with 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:
SimpleIoProcessorPool.SimpleIoProcessorPool(Class, Executor, int)

NioSocketConnector

public NioSocketConnector(Class<? extends IoProcessor<NioSession>> processorClass)
Constructor for NioSocketConnector with 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:
SimpleIoProcessorPool.SimpleIoProcessorPool(Class, Executor, int), SimpleIoProcessorPool.DEFAULT_SIZE
Method Detail

init

protected void init()
             throws Exception
Initialize the polling system, will be called at construction time.

Specified by:
init in class AbstractPollingIoConnector<NioSession,SocketChannel>
Throws:
Exception - any exception thrown by the underlying system calls

destroy

protected void destroy()
                throws Exception
Destroy the polling system, will be called when this IoConnector implementation will be disposed.

Specified by:
destroy in class AbstractPollingIoConnector<NioSession,SocketChannel>
Throws:
Exception - any exception thrown by the underlying systems calls

getTransportMetadata

public TransportMetadata getTransportMetadata()
Returns the TransportMetadata that this service runs on.

Specified by:
getTransportMetadata in interface IoService

getSessionConfig

public SocketSessionConfig getSessionConfig()
Returns the default configuration of the new IoSessions created by this service.

Specified by:
getSessionConfig in interface IoService
Specified by:
getSessionConfig in interface SocketConnector
Overrides:
getSessionConfig in class AbstractIoService

getDefaultRemoteAddress

public InetSocketAddress getDefaultRemoteAddress()
Returns the default remote address to connect to when no argument is specified in IoConnector.connect() method.

Specified by:
getDefaultRemoteAddress in interface IoConnector
Specified by:
getDefaultRemoteAddress in interface SocketConnector
Overrides:
getDefaultRemoteAddress in class AbstractIoConnector

setDefaultRemoteAddress

public void setDefaultRemoteAddress(InetSocketAddress defaultRemoteAddress)
TODO : add documentation

Specified by:
setDefaultRemoteAddress in interface SocketConnector

allHandles

protected Iterator<SocketChannel> allHandles()
Iterator for all the client sockets polled for connection.

Specified by:
allHandles in class AbstractPollingIoConnector<NioSession,SocketChannel>
Returns:
the list of client sockets currently polled for connection

connect

protected boolean connect(SocketChannel handle,
                          SocketAddress remoteAddress)
                   throws Exception
Connect a newly created client socket handle to a remote SocketAddress. This operation is non-blocking, so at end of the call the socket can be still in connection process.

Specified by:
connect in class AbstractPollingIoConnector<NioSession,SocketChannel>
Parameters:
handle - the client socket handle
remoteAddress - 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

getConnectionRequest

protected AbstractPollingIoConnector.ConnectionRequest getConnectionRequest(SocketChannel handle)
get the AbstractPollingIoConnector.ConnectionRequest for a given client socket handle

Specified by:
getConnectionRequest in class AbstractPollingIoConnector<NioSession,SocketChannel>
Parameters:
handle - the socket client handle
Returns:
the connection request if the socket is connecting otherwise null

close

protected void close(SocketChannel handle)
              throws Exception
Close a client socket.

Specified by:
close in class AbstractPollingIoConnector<NioSession,SocketChannel>
Parameters:
handle - the client socket
Throws:
Exception - any exception thrown by the underlying systems calls

finishConnect

protected boolean finishConnect(SocketChannel handle)
                         throws Exception
Finish the connection process of a client socket after it was marked as ready to process by the AbstractPollingIoConnector.select(int) call. The socket will be connected or reported as connection failed.

Specified by:
finishConnect in class AbstractPollingIoConnector<NioSession,SocketChannel>
Parameters:
handle - the client socket handle to finsh to connect
Returns:
true if the socket is connected
Throws:
Exception - any exception thrown by the underlying systems calls

newHandle

protected SocketChannel newHandle(SocketAddress localAddress)
                           throws Exception
Create a new client socket handle from a local SocketAddress

Specified by:
newHandle in class AbstractPollingIoConnector<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

protected NioSession newSession(IoProcessor<NioSession> processor,
                                SocketChannel handle)
Create a new IoSession from a connected socket client handle. Will assign the created IoSession to the given IoProcessor for managing future I/O events.

Specified by:
newSession in class AbstractPollingIoConnector<NioSession,SocketChannel>
Parameters:
processor - the processor in charge of this session
handle - the newly connected client socket handle
Returns:
a new IoSession

register

protected void register(SocketChannel handle,
                        AbstractPollingIoConnector.ConnectionRequest request)
                 throws Exception
Register a new client socket for connection, add it to connection polling

Specified by:
register in class AbstractPollingIoConnector<NioSession,SocketChannel>
Parameters:
handle - client socket handle
request - the associated AbstractPollingIoConnector.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 by AbstractPollingIoConnector.selectedHandles()

Specified by:
select in class AbstractPollingIoConnector<NioSession,SocketChannel>
Returns:
The number of socket having received some data
Throws:
Exception - any exception thrown by the underlying systems calls

selectedHandles

protected Iterator<SocketChannel> selectedHandles()
Iterator for the set of client sockets found connected or failed to connect during the last #select() call.

Specified by:
selectedHandles in class AbstractPollingIoConnector<NioSession,SocketChannel>
Returns:
the list of client socket handles to process

wakeup

protected void wakeup()
Interrupt the #select() method. Used when the poll set need to be modified.

Specified by:
wakeup in class AbstractPollingIoConnector<NioSession,SocketChannel>


Copyright © 2004-2011 Apache MINA Project. All Rights Reserved.