## 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
`BaseIOReactor(long selectTimeout)` Creates new BaseIOReactor instance.
`BaseIOReactor(long selectTimeout, boolean interestOpsQueueing)` Creates new BaseIOReactor instance.

Method Summary
`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.