Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Rice Pastry API
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## rice.selector
Class SelectorManager

    java.lang.Object
      java.lang.Thread
          rice.selector.SelectorManager

All Implemented Interfaces:
  Destructable, java.lang.Runnable, Timer

Direct Known Subclasses:
  ProfileSelector

public class SelectorManager
extends java.lang.Thread
implements Timer, Destructable

This class is the class which handles the selector, and listens for activity. When activity occurs, it figures out who is interested in what has happened, and hands off to that object.

Version:
  $Id: SelectorManager.java 2870 2005-12-21 15:07:14Z jeffh $
Author:
  Alan Mislove

Field Summary
`protected java.util.HashSet` | `cancelledKeys` DESCRIBE THE FIELD
`protected java.lang.String` | `instance` DESCRIBE THE FIELD
`protected java.util.LinkedList` | `invocations` DESCRIBE THE FIELD
`protected Logger` | `logger` DESCRIBE THE FIELD
`protected java.util.HashSet` | `modifyKeys` DESCRIBE THE FIELD
`protected boolean` | `running` DESCRIBE THE FIELD
`protected java.nio.channels.Selector` | `selector` DESCRIBE THE FIELD
`static int` | `TIMEOUT` DESCRIBE THE FIELD
`protected java.util.TreeSet` | `timerQueue` DESCRIBE THE FIELD
`protected TimeSource` | `timeSource` DESCRIBE THE FIELD
`protected long` | `wakeupTime` DESCRIBE THE FIELD

Fields inherited from class java.lang.Thread
`MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY`

Constructor Summary
`SelectorManager(java.lang.String instance, TimeSource timeSource, LogManager log)` Constructor, which is private since there is only one selector per JVM.

Method Summary
`void` | `addLoopObserver(LoopObserver lo)` Adds a feature to the LoopObserver attribute of the SelectorManager object
`void` | `cancel(java.nio.channels.SelectionKey key)` Method which asks the Selector Manager to add the given key to the cancelled set.
`void` | `destroy()` DESCRIBE THE METHOD
`protected void` | `doInvocations()` Method which invokes all pending invocations.
`protected void` | `doSelections()` DESCRIBE THE METHOD
`protected void` | `executeDueTasks()` Internal method which finds all due tasks and executes them.
`protected java.lang.Runnable` | `getInvocation()` Method which synchroniously returns the first element off of the invocations list.
`java.nio.channels.SelectionKey` | `getKey(java.nio.channels.SelectableChannel channel)` Utility method which returns the SelectionKey attached to the given channel, if one exists
`protected java.nio.channels.SelectionKey` | `getModifyKey()` Method which synchroniously returns on element off of the modifyKeys list
`int` | `getNumInvocations()` Debug method which returns the number of pending invocations
`java.nio.channels.Selector` | `getSelector()` Gets the Selector attribute of the SelectorManager object
`Timer` | `getTimer()` Returns the timer associated with this SelectorManager (in this case, it is this).
`void` | `invoke(java.lang.Runnable d)` This method schedules a runnable task to be done by the selector thread during the next select() call.
`boolean` | `isSelectorThread()` Returns whether or not this thread of execution is the selector thread
`void` | `modifyKey(java.nio.channels.SelectionKey key)` Adds a selectionkey handler into the list of handlers which wish to change their keys.
`protected void` | `notifyLoopListeners()` DESCRIBE THE METHOD
`protected void` | `onLoop()` This method is to be implemented by a subclass to do some task each loop.
`java.nio.channels.SelectionKey` | `register(java.nio.channels.SelectableChannel channel, SelectionKeyHandler handler, int ops)` Registers a new channel with the selector, and attaches the given SelectionKeyHandler as the handler for the newly created key.
`void` | `removeLoopObserver(LoopObserver lo)` DESCRIBE THE METHOD
`void` | `run()` This method starts the socket manager listening for events.
`void` | `schedule(TimerTask task, long delay)` Method which schedules a task to run after a specified number of millis
`void` | `schedule(TimerTask task, long delay, long period)` Method which schedules a task to run repeatedly after a specified delay and period
`void` | `scheduleAtFixedRate(TimerTask task, long delay, long period)` Method which schedules a task to run repeatedly (at a fixed rate) after a specified delay and period
`protected java.nio.channels.SelectionKey[]` | `selectedKeys()` Selects all of the currenlty selected keys on the selector and returns the result as an array of keys.

Methods inherited from class java.lang.Thread
`activeCount, checkAccess, countStackFrames, currentThread, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### selector

    protected java.nio.channels.Selector selector

  DESCRIBE THE FIELD

### invocations

    protected java.util.LinkedList invocations

  DESCRIBE THE FIELD

### modifyKeys

    protected java.util.HashSet modifyKeys

  DESCRIBE THE FIELD

### cancelledKeys

    protected java.util.HashSet cancelledKeys

  DESCRIBE THE FIELD

### timerQueue

    protected java.util.TreeSet timerQueue

  DESCRIBE THE FIELD

### wakeupTime

    protected long wakeupTime

  DESCRIBE THE FIELD

### timeSource

    protected TimeSource timeSource

  DESCRIBE THE FIELD

### logger

    protected Logger logger

  DESCRIBE THE FIELD

### instance

    protected java.lang.String instance

  DESCRIBE THE FIELD

### running

    protected boolean running

  DESCRIBE THE FIELD

### TIMEOUT

    public static int TIMEOUT

  DESCRIBE THE FIELD

Constructor Detail

### SelectorManager

    public SelectorManager(java.lang.String instance,
                           TimeSource timeSource,
                           LogManager log)

  Constructor, which is private since there is only one selector per JVM.

Parameters:
  `instance` - DESCRIBE THE PARAMETER
  `timeSource` - DESCRIBE THE PARAMETER
  `log` - DESCRIBE THE PARAMETER

Method Detail

### getKey

    public java.nio.channels.SelectionKey getKey(java.nio.channels.SelectableChannel channel)

  Utility method which returns the SelectionKey attached to the given channel, if one exists

  Parameters:
    `channel` - The channel to return the key for
  Returns:
    The key

### getNumInvocations

    public int getNumInvocations()

  Debug method which returns the number of pending invocations

  Returns:
    The number of pending invocations

### getInvocation

    protected java.lang.Runnable getInvocation()

  Method which synchroniously returns the first element off of the invocations list.

  Returns:
    An item from the invocations list

### getModifyKey

    protected java.nio.channels.SelectionKey getModifyKey()

  Method which synchroniously returns on element off of the modifyKeys list

  Returns:
    An item from the invocations list

### isSelectorThread

    public boolean isSelectorThread()

  Returns whether or not this thread of execution is the selector thread

  Returns:
    Whether or not this is the selector thread

### getTimer

    public Timer getTimer()

  Returns the timer associated with this SelectorManager (in this case, it is this).

  Returns:
    The associated timer

### getSelector

    public java.nio.channels.Selector getSelector()

  Gets the Selector attribute of the SelectorManager object

  Returns:
    The Selector value

### cancel

    public void cancel(java.nio.channels.SelectionKey key)

  Method which asks the Selector Manager to add the given key to the cancelled set. If noone calls register on this key during the rest of this select() operation, the key will be cancelled. Otherwise, it will be returned as a result of the register operation.

  Parameters:
    `key` - The key to cancel

### register

    public java.nio.channels.SelectionKey register(java.nio.channels.SelectableChannel channel,
                                                   SelectionKeyHandler handler,
                                                   int ops)
                                            throws java.io.IOException

  Registers a new channel with the selector, and attaches the given SelectionKeyHandler as the handler for the newly created key. Operations which the hanlder is interested in will be called as available.

  Parameters:
    `channel` - The channel to regster with the selector
    `handler` - The handler to use for the callbacks
    `ops` - The initial interest operations
  Returns:
    The SelectionKey which uniquely identifies this channel
  Throws:
    `java.io.IOException` - DESCRIBE THE EXCEPTION

### invoke

    public void invoke(java.lang.Runnable d)

  This method schedules a runnable task to be done by the selector thread during the next select() call. All operations which modify the selector should be done using this method, as they must be done in the selector thread.

  Parameters:
    `d` - The runnable task to invoke

### modifyKey

    public void modifyKey(java.nio.channels.SelectionKey key)

  Adds a selectionkey handler into the list of handlers which wish to change their keys. Thus, modifyKeys() will be called on the next selection operation

  Parameters:
    `key` - The key which is to be chanegd

### onLoop

    protected void onLoop()

  This method is to be implemented by a subclass to do some task each loop.

### run

    public void run()

  This method starts the socket manager listening for events. It is designed to be started when this thread's start() method is invoked.

  Specified by:
    `run` in interface `java.lang.Runnable`

### destroy

    public void destroy()

  DESCRIBE THE METHOD

  Specified by:
    `destroy` in interface `Destructable`

### notifyLoopListeners

    protected void notifyLoopListeners()

  DESCRIBE THE METHOD

### addLoopObserver

    public void addLoopObserver(LoopObserver lo)

  Adds a feature to the LoopObserver attribute of the SelectorManager object

  Parameters:
    `lo` - The feature to be added to the LoopObserver attribute

### removeLoopObserver

    public void removeLoopObserver(LoopObserver lo)

  DESCRIBE THE METHOD

  Parameters:
    `lo` - DESCRIBE THE PARAMETER

### doSelections

    protected void doSelections()
                         throws java.io.IOException

  DESCRIBE THE METHOD

  Throws:
    `java.io.IOException` - DESCRIBE THE EXCEPTION

### doInvocations

    protected void doInvocations()

  Method which invokes all pending invocations. This method should *only* be called by the selector thread.

### selectedKeys

    protected java.nio.channels.SelectionKey[] selectedKeys()
                                                     throws java.io.IOException

  Selects all of the currenlty selected keys on the selector and returns the result as an array of keys.

  Returns:
    The array of keys
  Throws:
    `java.io.IOException` - DESCRIBE THE EXCEPTION

### schedule

    public void schedule(TimerTask task,
                         long delay)

  Method which schedules a task to run after a specified number of millis

  Specified by:
    `schedule` in interface `Timer`
  Parameters:
    `task` - The task to run
    `delay` - The delay before running, in milliseconds

### schedule

    public void schedule(TimerTask task,
                         long delay,
                         long period)

  Method which schedules a task to run repeatedly after a specified delay and period

  Specified by:
    `schedule` in interface `Timer`
  Parameters:
    `task` - The task to run
    `delay` - The delay before first running, in milliseconds
    `period` - The period with which to run in milliseconds

### scheduleAtFixedRate

    public void scheduleAtFixedRate(TimerTask task,
                                    long delay,
                                    long period)

  Method which schedules a task to run repeatedly (at a fixed rate) after a specified delay and period

  Specified by:
    `scheduleAtFixedRate` in interface `Timer`
  Parameters:
    `task` - The task to run
    `delay` - The delay before first running in milliseconds
    `period` - The period with which to run in milliseconds

### executeDueTasks

    protected void executeDueTasks()

  Internal method which finds all due tasks and executes them.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| Rice Pastry API
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2001-2005 - Rice Pastry.