org.apache.http.impl.nio.reactor
Class BaseIOReactor

java.lang.Object
  extended by org.apache.http.impl.nio.reactor.AbstractIOReactor
      extended by org.apache.http.impl.nio.reactor.BaseIOReactor
All Implemented Interfaces:
IOReactor

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  IOSession getSession(SelectionKey key)
          Obtains IOSession instance associated with the given selection key.
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.
 void setExceptionHandler(IOReactorExceptionHandler exceptionHandler)
          Sets exception handler for this I/O reactor.
protected  void timeoutCheck(SelectionKey key, long now)
          Performs timeout check for the I/O session associated with the given selection key.
protected  void validate(Set<SelectionKey> keys)
          Verifies whether any of the sessions associated with the given selection keys timed out by invoking the 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, getStatus, gracefulShutdown, hardShutdown, processEvent, queueClosedSession, shutdown, shutdown
 
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 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.

timeoutCheck

protected void timeoutCheck(SelectionKey key,
                            long now)
Performs timeout check for the I/O session associated with the given selection key.

Specified by:
timeoutCheck in class AbstractIOReactor
Parameters:
key - the selection key.
now - current time as long value.

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.

Specified by:
sessionCreated in class AbstractIOReactor
Parameters:
key - the selection key.
session - new I/O session.

getSession

protected IOSession getSession(SelectionKey key)
Description copied from class: AbstractIOReactor
Obtains IOSession instance associated with the given selection key.

Specified by:
getSession in class AbstractIOReactor
Parameters:
key - the selection key.
Returns:
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.

Specified by:
sessionClosed in class AbstractIOReactor
Parameters:
session - closed I/O session.


Copyright © 2005-2010 The Apache Software Foundation. All Rights Reserved.