org.almendra.janet.cas.schedulers
Class Arbitrator
java.lang.Object
org.almendra.commons.threads.ActiveObject
org.almendra.commons.threads.ActiveSchedulingObject
org.almendra.janet.cas.schedulers.AbstractScheduler
org.almendra.janet.cas.schedulers.Arbitrator
- All Implemented Interfaces:
- java.lang.Runnable, INamedObject, ISimpleActiveObject, ILoggable
public class Arbitrator
- extends AbstractScheduler
- implements ILoggable
- Author:
- Oliver Plohmann
Methods inherited from class org.almendra.commons.threads.ActiveSchedulingObject |
add, available, doActivity, executableAdded, executableRemoved, executePrimary, finishedExecution, getNextPrim, getQueueSize, hasNext, remove, resuming, startingExecution, suspending |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ARBITRATOR_NAME
public static final java.lang.String ARBITRATOR_NAME
- See Also:
- Constant Field Values
LOG_EVENT_CHANGING_ACTIVE_SCHEDULER
public static final java.lang.String LOG_EVENT_CHANGING_ACTIVE_SCHEDULER
- See Also:
- Constant Field Values
LOGGER_OBJECT_NAME
public static final java.lang.String LOGGER_OBJECT_NAME
- See Also:
- Constant Field Values
currentScheduler
protected ArbitratedScheduler currentScheduler
timeSliceInMillis
protected volatile int timeSliceInMillis
node
protected Node node
scheduler
protected SchedulerAnchor scheduler
sleepingSchedulers
protected java.util.List sleepingSchedulers
waitingSchedulers
protected java.util.List waitingSchedulers
producerConsumerLock
protected EDU.oswego.cs.dl.util.concurrent.ReentrantLock producerConsumerLock
isEnabled
protected volatile boolean isEnabled
Arbitrator
protected Arbitrator()
Arbitrator
public Arbitrator(SchedulerAnchor scheduler,
Logger logger,
int priority)
getNext
protected IExecutable getNext()
- Description copied from class:
ActiveSchedulingObject
- Return the next item of the
queue
to be processed. Blocks
if queue
is empty.
- Overrides:
getNext
in class ActiveSchedulingObject
- Returns:
- returns next item in
queue
or null but only if
the active object was stopped
setSleeping
protected void setSleeping(ArbitratedScheduler arbitratedScheduler)
setWaiting
protected void setWaiting(ApplicationScheduler appScheduler)
setTimeSliceInMillis
public void setTimeSliceInMillis(int i)
- Parameters:
i
-
commandAddedTo
protected void commandAddedTo(ArbitratedScheduler arbitratedScheduler)
setScheduled
protected void setScheduled(ArbitratedScheduler arbitratedScheduler)
setWaitingSchedulerScheduled
protected void setWaitingSchedulerScheduled(java.util.List arbitratedSchedulers)
execute
protected void execute(IExecutable executable)
- Description copied from class:
ActiveSchedulingObject
- Called to process the next item from the
queue
. Must be
implemented in subclasses as appropriate.
- Specified by:
execute
in class ActiveSchedulingObject
start
protected void start(ArbitratedScheduler arbitratedScheduler)
sleep
protected void sleep(ArbitratedScheduler arbitratedScheduler)
logChangedActiveScheduler
protected void logChangedActiveScheduler(CommandScheduler previouslyActiveScheduler,
CommandScheduler currentlyActiveScheduler)
- Parameters:
schedulerAnchor
-
stop
public void stop()
- Description copied from class:
ActiveObject
- Stop the active object. Ignored if never started or already stopped.
- Specified by:
stop
in interface ISimpleActiveObject
- Overrides:
stop
in class ActiveObject
isDaemon
public boolean isDaemon()
- Description copied from class:
ActiveObject
- Implement in subclass whether thread the active object will run in when started
is a daemon thread or not. A daemon thread only lives to server user threads.
- Overrides:
isDaemon
in class AbstractScheduler
- Returns:
registeredLogEvents
public java.util.List registeredLogEvents()
- Description copied from interface:
ILoggable
- Return list of events that may occur for an object.
- Specified by:
registeredLogEvents
in interface ILoggable
- Overrides:
registeredLogEvents
in class AbstractScheduler
- Returns:
init
protected void init()
created
public void created(ArbitratedScheduler arbitratedScheduler)
- Parameters:
appScheduler
-
removeScheduler
public void removeScheduler(ApplicationScheduler appScheduler)
- Parameters:
appScheduler
-
isIdle
public boolean isIdle()
- Overrides:
isIdle
in class ActiveSchedulingObject
isIdle
public void isIdle(ArbitratedScheduler arbitratedScheduler)
- Parameters:
appScheduler
-
setLogger
protected void setLogger(Logger logger)
- Overrides:
setLogger
in class AbstractScheduler
start
public void start(boolean isEnabled)
- Parameters:
b
-