org.apache.mina.transport.socket.nio

## 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).
  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

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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 `IoSession`s 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 `IoSession`s 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-2012 Apache MINA Project. All Rights Reserved.