com.aelitis.azureus.core.networkmanager
Class VirtualChannelSelector

java.lang.Object
  extended by com.aelitis.azureus.core.networkmanager.VirtualChannelSelector

public class VirtualChannelSelector
extends Object


Nested Class Summary
static interface VirtualChannelSelector.VirtualAbstractSelectorListener
           
static interface VirtualChannelSelector.VirtualAcceptSelectorListener
           
static interface VirtualChannelSelector.VirtualSelectorListener
          Listener for notification upon socket channel selection.
 
Field Summary
static int OP_ACCEPT
           
static int OP_CONNECT
           
static int OP_READ
           
static int OP_WRITE
           
 
Constructor Summary
VirtualChannelSelector(String name, int interest_op, boolean pause_after_select)
          Create a new virtual selectable-channel selector, selecting over the given interest-op.
 
Method Summary
 void cancel(AbstractSelectableChannel channel)
          Cancel the selection operations for the given channel.
 void destroy()
           
 void enableSafeSelectionMode()
           
 String getName()
           
 boolean isDestroyed()
           
 boolean isSafeSelectionModeEnabled()
           
 void pauseSelects(AbstractSelectableChannel channel)
          Pause selection operations for the given channel
 void register(ServerSocketChannel channel, VirtualChannelSelector.VirtualAcceptSelectorListener listener, Object attachment)
           
 void register(SocketChannel channel, VirtualChannelSelector.VirtualSelectorListener listener, Object attachment)
           
protected  void registerSupport(AbstractSelectableChannel channel, VirtualChannelSelector.VirtualAbstractSelectorListener listener, Object attachment)
          Register the given selectable channel, using the given listener for notification of completed select operations.
 void resumeSelects(AbstractSelectableChannel channel)
          Resume selection operations for the given channel
 int select(long timeout)
          Run a virtual select() operation, with the given selection timeout value; (1) cancellations are processed (2) the select operation is performed; (3) listener notification of completed selects (4) new registrations are processed
 void selectFailure(VirtualChannelSelector.VirtualAbstractSelectorListener listener, AbstractSelectableChannel sc, Object attachment, Throwable msg)
           
 boolean selectSuccess(VirtualChannelSelector.VirtualAbstractSelectorListener listener, AbstractSelectableChannel sc, Object attachment)
           
 void setRandomiseKeys(boolean _rk)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OP_ACCEPT

public static final int OP_ACCEPT
See Also:
Constant Field Values

OP_CONNECT

public static final int OP_CONNECT
See Also:
Constant Field Values

OP_READ

public static final int OP_READ
See Also:
Constant Field Values

OP_WRITE

public static final int OP_WRITE
See Also:
Constant Field Values
Constructor Detail

VirtualChannelSelector

public VirtualChannelSelector(String name,
                              int interest_op,
                              boolean pause_after_select)
Create a new virtual selectable-channel selector, selecting over the given interest-op.

Parameters:
interest_op - operation set of OP_CONNECT, OP_ACCEPT, OP_READ, or OP_WRITE
pause_after_select - whether or not to auto-disable interest op after select
Method Detail

getName

public String getName()

register

public void register(SocketChannel channel,
                     VirtualChannelSelector.VirtualSelectorListener listener,
                     Object attachment)

register

public void register(ServerSocketChannel channel,
                     VirtualChannelSelector.VirtualAcceptSelectorListener listener,
                     Object attachment)

registerSupport

protected void registerSupport(AbstractSelectableChannel channel,
                               VirtualChannelSelector.VirtualAbstractSelectorListener listener,
                               Object attachment)
Register the given selectable channel, using the given listener for notification of completed select operations. NOTE: For OP_CONNECT and OP_WRITE -type selectors, once a selection request op completes, the channel's op registration is automatically disabled (paused); any future wanted selection notification requires re-enabling via resume. For OP_READ selectors, it stays enabled until actively paused, no matter how many times it is selected.

Parameters:
channel - socket to listen for
listener - op-complete listener
attachment - object to be passed back with listener notification

pauseSelects

public void pauseSelects(AbstractSelectableChannel channel)
Pause selection operations for the given channel

Parameters:
channel - to pause

resumeSelects

public void resumeSelects(AbstractSelectableChannel channel)
Resume selection operations for the given channel

Parameters:
channel - to resume

cancel

public void cancel(AbstractSelectableChannel channel)
Cancel the selection operations for the given channel.

Parameters:
channel - channel originally registered

setRandomiseKeys

public void setRandomiseKeys(boolean _rk)

select

public int select(long timeout)
Run a virtual select() operation, with the given selection timeout value; (1) cancellations are processed (2) the select operation is performed; (3) listener notification of completed selects (4) new registrations are processed

Parameters:
timeout - in ms; if zero, block indefinitely
Returns:
number of sockets selected

destroy

public void destroy()

isDestroyed

public boolean isDestroyed()

isSafeSelectionModeEnabled

public boolean isSafeSelectionModeEnabled()

enableSafeSelectionMode

public void enableSafeSelectionMode()

selectSuccess

public boolean selectSuccess(VirtualChannelSelector.VirtualAbstractSelectorListener listener,
                             AbstractSelectableChannel sc,
                             Object attachment)

selectFailure

public void selectFailure(VirtualChannelSelector.VirtualAbstractSelectorListener listener,
                          AbstractSelectableChannel sc,
                          Object attachment,
                          Throwable msg)