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  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–2021 The Apache Software Foundation. All rights reserved.