org.apache.http.impl.nio.reactor

## Class BaseIOReactor

- java.lang.Object
- - org.apache.http.impl.nio.reactor.AbstractIOReactor
  - - org.apache.http.impl.nio.reactor.BaseIOReactor

- All Implemented Interfaces:
    IOReactor

      @ThreadSafe
      public class BaseIOReactor
      extends AbstractIOReactor

  Default implementation of `AbstractIOReactor` that serves as a base for more advanced `IOReactor` implementations. This class adds support for the I/O event dispatching using `IOEventDispatch`, management of buffering sessions, and session timeout handling.
  Since:
    4.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BaseIOReactor(long selectTimeout)` Creates new BaseIOReactor instance.
    `BaseIOReactor(long selectTimeout, boolean interestOpsQueueing)` Creates new BaseIOReactor instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `acceptable(SelectionKey key)` This I/O reactor implementation does not react to the `SelectionKey.OP_ACCEPT` event.
    `protected void` | `connectable(SelectionKey key)` This I/O reactor implementation does not react to the `SelectionKey.OP_CONNECT` event.
    `void` | `execute(IOEventDispatch eventDispatch)` Activates the I/O reactor.
    `protected void` | `handleRuntimeException(RuntimeException ex)` Handles the given `RuntimeException`.
    `protected void` | `readable(SelectionKey key)` Processes `SelectionKey.OP_READ` event on the given selection key.
    `protected void` | `sessionClosed(IOSession session)` Processes closed I/O session.
    `protected void` | `sessionCreated(SelectionKey key, IOSession session)` Processes newly created I/O session.
    `protected void` | `sessionTimedOut(IOSession session)` Processes timed out I/O session.
    `void` | `setExceptionHandler(IOReactorExceptionHandler exceptionHandler)` Sets exception handler for this I/O reactor.
    `protected void` | `validate(Set<SelectionKey> keys)` Verifies whether any of the sessions associated with the given selection keys timed out by invoking the `AbstractIOReactor.timeoutCheck(SelectionKey, long)` method.
    `protected void` | `writable(SelectionKey key)` Processes `SelectionKey.OP_WRITE` event on the given selection key.

    - ### Methods inherited from class org.apache.http.impl.nio.reactor.AbstractIOReactor

      `addChannel, awaitShutdown, closeActiveChannels, closeNewChannels, closeSessions, execute, getInterestOpsQueueing, getSession, getStatus, gracefulShutdown, hardShutdown, processEvent, queueClosedSession, shutdown, shutdown, timeoutCheck`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### BaseIOReactor

          public BaseIOReactor(long selectTimeout)
                        throws IOReactorException

      Creates new BaseIOReactor instance.
      Parameters:
        `selectTimeout` - the select timeout.
      Throws:
        `IOReactorException` - in case if a non-recoverable I/O error.

    - #### BaseIOReactor

          public BaseIOReactor(long selectTimeout,
                       boolean interestOpsQueueing)
                        throws IOReactorException

      Creates new BaseIOReactor instance.
      Parameters:
        `selectTimeout` - the select timeout.
        `interestOpsQueueing` - Ops queueing flag.
      Throws:
        `IOReactorException` - in case if a non-recoverable I/O error.
      Since:
        4.1

  - ### Method Detail

    - #### execute

          public void execute(IOEventDispatch eventDispatch)
                       throws InterruptedIOException,
                              IOReactorException

      Activates the I/O reactor. The I/O reactor will start reacting to I/O events and dispatch I/O event notifications to the given `IOEventDispatch`.
      Parameters:
        `eventDispatch` - the I/O event dispatch.
      Throws:
        `InterruptedIOException` - if the dispatch thread is interrupted.
        `IOReactorException` - in case if a non-recoverable I/O error.

    - #### setExceptionHandler

          public void setExceptionHandler(IOReactorExceptionHandler exceptionHandler)

      Sets exception handler for this I/O reactor.
      Parameters:
        `exceptionHandler` - the exception handler.

    - #### handleRuntimeException

          protected void handleRuntimeException(RuntimeException ex)

      Handles the given `RuntimeException`. This method delegates handling of the exception to the `IOReactorExceptionHandler`, if available.
      Parameters:
        `ex` - the runtime exception.

    - #### acceptable

          protected void acceptable(SelectionKey key)

      This I/O reactor implementation does not react to the `SelectionKey.OP_ACCEPT` event.

      Super-classes can override this method to react to the event.

      Specified by:
        `acceptable` in class `AbstractIOReactor`
      Parameters:
        `key` - the selection key.

    - #### connectable

          protected void connectable(SelectionKey key)

      This I/O reactor implementation does not react to the `SelectionKey.OP_CONNECT` event.

      Super-classes can override this method to react to the event.

      Specified by:
        `connectable` in class `AbstractIOReactor`
      Parameters:
        `key` - the selection key.

    - #### readable

          protected void readable(SelectionKey key)

      Processes `SelectionKey.OP_READ` event on the given selection key. This method dispatches the event notification to the `IOEventDispatch.inputReady(IOSession)` method.
      Specified by:
        `readable` in class `AbstractIOReactor`
      Parameters:
        `key` - the selection key.

    - #### writable

          protected void writable(SelectionKey key)

      Processes `SelectionKey.OP_WRITE` event on the given selection key. This method dispatches the event notification to the `IOEventDispatch.outputReady(IOSession)` method.
      Specified by:
        `writable` in class `AbstractIOReactor`
      Parameters:
        `key` - the selection key.

    - #### validate

          protected void validate(Set<SelectionKey> keys)

      Verifies whether any of the sessions associated with the given selection keys timed out by invoking the `AbstractIOReactor.timeoutCheck(SelectionKey, long)` method.

      This method will also invoke the `IOEventDispatch.inputReady(IOSession)` method on all sessions that have buffered input data.

      Specified by:
        `validate` in class `AbstractIOReactor`
      Parameters:
        `keys` - all selection keys registered with the selector.

    - #### sessionCreated

          protected void sessionCreated(SelectionKey key,
                            IOSession session)

      Processes newly created I/O session. This method dispatches the event notification to the `IOEventDispatch.connected(IOSession)` method.
      Overrides:
        `sessionCreated` in class `AbstractIOReactor`
      Parameters:
        `key` - the selection key.
        `session` - new I/O session.

    - #### sessionTimedOut

          protected void sessionTimedOut(IOSession session)

      Processes timed out I/O session. This method dispatches the event notification to the `IOEventDispatch.timeout(IOSession)` method.
      Overrides:
        `sessionTimedOut` in class `AbstractIOReactor`
      Parameters:
        `session` - timed out I/O session.

    - #### sessionClosed

          protected void sessionClosed(IOSession session)

      Processes closed I/O session. This method dispatches the event notification to the `IOEventDispatch.disconnected(IOSession)` method.
      Overrides:
        `sessionClosed` in class `AbstractIOReactor`
      Parameters:
        `session` - closed I/O session.

Copyright © 2005–2013 The Apache Software Foundation. All rights reserved.