OpenNMS API 1.1.4

org.opennms.netmgt.poller
Class Scheduler

java.lang.Object
  extended byorg.opennms.netmgt.poller.Scheduler
All Implemented Interfaces:
Fiber, PausableFiber, java.lang.Runnable

final class Scheduler
extends java.lang.Object
implements java.lang.Runnable, PausableFiber

This class implements a simple scheduler to ensure the polling occurs at the expected intervals. The scheduler employees a dynamic thread pool that adjust to the load until a maximum thread count is reached.

Author:
Brian Weaver, OpenNMS

Nested Class Summary
private static class Scheduler.PeekableFifoQueue
          This queue extends the standard FIFO queue instance so that it is possible to peek at an instance without removing it from the queue.
 
Field Summary
private static java.lang.String FIBER_NAME
          The prefix for the fiber name.
private  java.lang.String m_name
          The name of this fiber.
private  java.util.Map m_queues
          The map of queue that contain ready runnable instances.
private  RunnableConsumerThreadPool m_runner
          The pool of threads that are used to executed the runnable instances scheduled by the class' instance.
private  int m_scheduled
          The total number of elements currently scheduled.
private  int m_status
          The status for this fiber.
private  java.lang.Thread m_worker
          The worker thread that executes this instance.
 
Fields inherited from interface org.opennms.core.fiber.PausableFiber
PAUSE_PENDING, PAUSED, RESUME_PENDING
 
Fields inherited from interface org.opennms.core.fiber.Fiber
RUNNING, START_PENDING, STARTING, STATUS_NAMES, STOP_PENDING, STOPPED
 
Constructor Summary
(package private) Scheduler(int maxSize)
          Constructs a new instance of the scheduler.
(package private) Scheduler(int maxSize, float lowMark, float hiMark)
          Constructs a new instance of the scheduler.
 
Method Summary
 java.lang.String getName()
          Returns the name of this fiber.
 int getStatus()
          Returns the current of this fiber.
 void pause()
          Pauses the scheduler if it is current running.
 void resume()
          Resumes the scheduler if it has been paused.
 void run()
          The main method of the scheduler.
(package private)  void schedule(ReadyRunnable runnable, long interval)
          This method is used to schedule a ready runnable in the system.
 void start()
          Starts the fiber.
 void stop()
          Stops the fiber.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FIBER_NAME

private static final java.lang.String FIBER_NAME
The prefix for the fiber name.

See Also:
Constant Field Values

m_queues

private java.util.Map m_queues
The map of queue that contain ready runnable instances. The queues are mapped according to the interval of scheduling.


m_scheduled

private int m_scheduled
The total number of elements currently scheduled. This should be the sum of all the elements in the various queues.


m_runner

private RunnableConsumerThreadPool m_runner
The pool of threads that are used to executed the runnable instances scheduled by the class' instance.


m_name

private java.lang.String m_name
The name of this fiber.


m_status

private int m_status
The status for this fiber.


m_worker

private java.lang.Thread m_worker
The worker thread that executes this instance.

Constructor Detail

Scheduler

Scheduler(int maxSize)
Constructs a new instance of the scheduler. The maximum number of executable threads is specified in the constructor. The executable threads are part of a runnable thread pool where the scheduled runnables are executed.

Parameters:
maxSize - The maximum size of the thread pool.

Scheduler

Scheduler(int maxSize,
          float lowMark,
          float hiMark)
Constructs a new instance of the scheduler. The maximum number of executable threads is specified in the constructor. The executable threads are part of a runnable thread pool where the scheduled runnables are executed.

Parameters:
maxSize - The maximum size of the thread pool.
lowMark - The low water mark ratios of thread size to threads when threads are stopped.
hiMark - The high water mark ratio of thread size to threads when threads are started.
Method Detail

schedule

void schedule(ReadyRunnable runnable,
              long interval)
This method is used to schedule a ready runnable in the system. The interval is used as the key for determining which queue to add the runnable.

Parameters:
runnable - The element to run when interval expires.
interval - The interval queue (measured in milliseconds) to add the runnable to.
Throws:
java.lang.RuntimeException - Thrown if an error occurs adding the element to the queue.

start

public void start()
Starts the fiber.

Specified by:
start in interface Fiber
Throws:
java.lang.IllegalStateException - Thrown if the fiber is already running.

stop

public void stop()
Stops the fiber. If the fiber has never been run then an exception is generated.

Specified by:
stop in interface Fiber
Throws:
java.lang.IllegalStateException - Throws if the fiber has never been started.

pause

public void pause()
Pauses the scheduler if it is current running. If the fiber has not been run or has already stopped then an exception is generated.

Specified by:
pause in interface PausableFiber
Throws:
java.lang.IllegalStateException - Throws if the operation could not be completed due to the fiber's state.

resume

public void resume()
Resumes the scheduler if it has been paused. If the fiber has not been run or has already stopped then an exception is generated.

Specified by:
resume in interface PausableFiber
Throws:
java.lang.IllegalStateException - Throws if the operation could not be completed due to the fiber's state.

getStatus

public int getStatus()
Returns the current of this fiber.

Specified by:
getStatus in interface Fiber
Returns:
The current status.

getName

public java.lang.String getName()
Returns the name of this fiber.

Specified by:
getName in interface Fiber
Returns:
The name of the Fiber.

run

public void run()
The main method of the scheduler. This method is responsible for checking the runnable queues for ready objects and then enqueuing them into the thread pool for execution.

Specified by:
run in interface java.lang.Runnable

OpenNMS API 1.1.4

Generated by eevans on November 11 2004 1600.