org.almendra.janet.cas.schedulers
Class ArbitratedScheduler

java.lang.Object
  extended by org.almendra.commons.threads.ActiveObject
      extended by org.almendra.commons.threads.ActiveSchedulingObject
          extended by org.almendra.janet.cas.schedulers.AbstractScheduler
              extended by org.almendra.janet.cas.schedulers.CommandScheduler
                  extended by org.almendra.janet.cas.schedulers.PriorityCommandScheduler
                      extended by org.almendra.janet.cas.schedulers.ArbitratedScheduler
All Implemented Interfaces:
java.lang.Runnable, INamedObject, IExecutable, ISimpleActiveObject, ILoggable
Direct Known Subclasses:
ApplicationScheduler, SystemScheduler

public abstract class ArbitratedScheduler
extends PriorityCommandScheduler
implements IExecutable

Author:
Oliver TODO To change the template for this generated type comment go to Window - Preferences - Java - Code Generation - Code and Comments

Field Summary
protected  AbstractApplication application
           
protected  Arbitrator arbitrator
           
protected  Capability capability
           
protected static java.math.BigInteger Count
           
static int DEFAULT_PRIORITIES
           
protected  int state
           
static int STATE_NEW
           
static int STATE_SCHEDULED
           
static int STATE_SLEEPING
           
static int STATE_WAITING
           
 
Fields inherited from class org.almendra.janet.cas.schedulers.CommandScheduler
LOG_EVENT_NO_SUITABLE_INTERPRETER_FOUND, LOG_EVENT_POST_EXEC_CMD, LOG_EVENT_PRE_EXEC_CMD, node
 
Fields inherited from class org.almendra.janet.cas.schedulers.AbstractScheduler
LOG_EVENT_RESUMING_SCHEDULER, LOG_EVENT_STARTED_SCHEDULER, LOG_EVENT_STOPPED_SCHEDULER, LOG_EVENT_SUSPENDING_SCHEDULER, logger
 
Fields inherited from class org.almendra.commons.threads.ActiveSchedulingObject
available, executing, queue
 
Fields inherited from class org.almendra.commons.threads.ActiveObject
activeLock, isActive, name, priority, thread, verbose, waiting
 
Constructor Summary
ArbitratedScheduler()
           
ArbitratedScheduler(Arbitrator arbitrator, AbstractApplication application, Capability capability, Logger logger, boolean verbose, int numPriorities)
           
ArbitratedScheduler(int numPriorities)
           
ArbitratedScheduler(int priority, boolean verbose)
           
ArbitratedScheduler(Logger logger)
           
ArbitratedScheduler(Logger logger, int priority)
           
ArbitratedScheduler(Logger logger, int priority, boolean verbose)
           
 
Method Summary
protected  void commandAdded()
           
protected  void executableAdded(IExecutable executable)
          Called whentever a new item has been added to the queue.
protected  void finishedExecution(java.lang.Object object)
           
protected  java.lang.String getApplicationName()
           
protected  java.lang.String getCapabilityName()
           
protected  java.lang.String getCurrentAgentName()
           
protected abstract  java.lang.String getLoggerObjectName()
           
protected  java.lang.String getLogName()
           
abstract  int getMaxPriority()
           
abstract  int getNumberOfSchedulersInSameApplication()
           
 boolean isRunning()
           
 boolean isSleeping()
           
 boolean isWaiting()
           
protected  void justCreated()
           
protected  void setLogger(Logger logger)
           
 void setNew()
           
 void setScheduled()
           
 void setSleeping()
           
 void setWaiting()
           
 
Methods inherited from class org.almendra.janet.cas.schedulers.PriorityCommandScheduler
getApplication, getDefaultNumberOfPriorities, getInterpreter, init
 
Methods inherited from class org.almendra.janet.cas.schedulers.CommandScheduler
accept, executableRemoved, execute, execute, execute, isDaemon, logExecuting, logInterpreterNotFound, messageResuming, messageSuspending, monitorFinishedCommand, monitorRemovedWaitingCommand, monitorStartedCommand, registeredLogEvents
 
Methods inherited from class org.almendra.janet.cas.schedulers.AbstractScheduler
getDefaultLogEntry, getLogger, log, messageStarting, messageStopping
 
Methods inherited from class org.almendra.commons.threads.ActiveSchedulingObject
add, available, doActivity, executePrimary, finishedExecution, getNext, getNextPrim, getQueueSize, hasNext, isIdle, remove, resuming, startingExecution, suspending
 
Methods inherited from class org.almendra.commons.threads.ActiveObject
getName, getPriority, isActive, isVerbose, run, setActive, setName, setPriority, setVerbose, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.almendra.commons.threads.IExecutable
execute
 
Methods inherited from interface java.lang.Runnable
run
 
Methods inherited from interface org.almendra.commons.threads.ISimpleActiveObject
isActive, start, stop
 
Methods inherited from interface org.almendra.commons.INamedObject
getName
 

Field Detail

DEFAULT_PRIORITIES

public static final int DEFAULT_PRIORITIES
See Also:
Constant Field Values

STATE_NEW

public static final int STATE_NEW
See Also:
Constant Field Values

STATE_SLEEPING

public static final int STATE_SLEEPING
See Also:
Constant Field Values

STATE_SCHEDULED

public static final int STATE_SCHEDULED
See Also:
Constant Field Values

STATE_WAITING

public static final int STATE_WAITING
See Also:
Constant Field Values

Count

protected static java.math.BigInteger Count

arbitrator

protected Arbitrator arbitrator

application

protected AbstractApplication application

capability

protected Capability capability

state

protected int state
Constructor Detail

ArbitratedScheduler

public ArbitratedScheduler()

ArbitratedScheduler

public ArbitratedScheduler(int priority,
                           boolean verbose)
Parameters:
priority -
verbose -

ArbitratedScheduler

public ArbitratedScheduler(Logger logger)
Parameters:
logger -

ArbitratedScheduler

public ArbitratedScheduler(Logger logger,
                           int priority)
Parameters:
logger -
priority -

ArbitratedScheduler

public ArbitratedScheduler(Logger logger,
                           int priority,
                           boolean verbose)
Parameters:
logger -
priority -
verbose -

ArbitratedScheduler

public ArbitratedScheduler(int numPriorities)
Parameters:
numPriorities -

ArbitratedScheduler

public ArbitratedScheduler(Arbitrator arbitrator,
                           AbstractApplication application,
                           Capability capability,
                           Logger logger,
                           boolean verbose,
                           int numPriorities)
Parameters:
node -
arbitrator -
verbose -
numPriorities -
Method Detail

justCreated

protected void justCreated()

getLoggerObjectName

protected abstract java.lang.String getLoggerObjectName()

commandAdded

protected void commandAdded()

executableAdded

protected void executableAdded(IExecutable executable)
Description copied from class: ActiveSchedulingObject
Called whentever a new item has been added to the queue. May be redefined in subclasses as appropriate.

Overrides:
executableAdded in class ActiveSchedulingObject

finishedExecution

protected void finishedExecution(java.lang.Object object)

getApplicationName

protected java.lang.String getApplicationName()
Specified by:
getApplicationName in class CommandScheduler
Returns:

getCapabilityName

protected java.lang.String getCapabilityName()
Specified by:
getCapabilityName in class CommandScheduler
Returns:

getCurrentAgentName

protected java.lang.String getCurrentAgentName()
Specified by:
getCurrentAgentName in class CommandScheduler
Returns:

getLogName

protected java.lang.String getLogName()
Specified by:
getLogName in class CommandScheduler
Returns:

isRunning

public boolean isRunning()

isSleeping

public boolean isSleeping()

isWaiting

public boolean isWaiting()

setNew

public void setNew()

setScheduled

public void setScheduled()

setSleeping

public void setSleeping()

setWaiting

public void setWaiting()

setLogger

protected void setLogger(Logger logger)
Overrides:
setLogger in class CommandScheduler

getNumberOfSchedulersInSameApplication

public abstract int getNumberOfSchedulersInSameApplication()

getMaxPriority

public abstract int getMaxPriority()