Class BasicExecutionEngine
- java.lang.Object
-
- com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine
-
- All Implemented Interfaces:
ExecutionManager
public class BasicExecutionEngine extends java.lang.Object implements ExecutionManager
The ExecutionEngine is a wrapper around a scheduled executor service. Callers are able to create named tasks, and this class keeps track of associating those names with the ScheduledFutures that represent the actual execution tasks.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classBasicExecutionEngine.SelfSchedulingRunnerclassBasicExecutionEngine.ThrowableCatchingRunnable
-
Constructor Summary
Constructors Constructor Description BasicExecutionEngine()BasicExecutionEngine(int threadCount, java.lang.String name)BasicExecutionEngine(int threadCount, java.lang.String name, boolean daemon)BasicExecutionEngine(int threadCount, java.lang.String name, java.util.concurrent.ThreadFactory threadFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidexecuteOnce(java.lang.Runnable command)Executes a runnable one time as soon as possible.voidexecuteOnce(java.lang.Runnable command, long delay)Excutes a runnable one time after a delay, specified in millisecondsjava.util.concurrent.ScheduledFuture<?>executeOnce(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit)Executes a runnable after a fixed delayjava.lang.StringgetName()java.util.List<java.lang.String>getTaskOwners()java.util.List<TaskStats>getTasks(java.lang.String owner)voidmodify(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int newRate, java.util.concurrent.TimeUnit newUnit)Modifies the execution rate of the given execution unit.voidmodifyFixedRate(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int newRate, java.util.concurrent.TimeUnit newUnit)voidregister(java.lang.String owner, java.lang.String name, SelfSchedulingRunnable command)Registers a self scheduling command to be executed.voidregister(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate)Registers a command to be executing repeatedly at the specified rate.voidregister(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit)Registers a command to be executing repeatedly at the specified rate.voidregisterAtFixedRate(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit)Registers a command to be executed with a fixed rate rather than a fixed delay.voidregisterAtFixedRateWithInitialDelay(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit, int initialDelay)Registers a command to be executed with a fixed rate after some initial delay.voidregisterWithInitialDelay(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, int initialDelay)Registers a command to be executing repeatedly at the specified rate with an initial delay.voidregisterWithInitialDelay(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit, int initialDelay)Registers a command to be executing repeatedly at the specified rate with an initial delay.java.lang.Stringschedule(java.lang.String taskName, java.lang.Runnable task, java.lang.String cronPattern)protected voidscheduleNext(BasicExecutionEngine.SelfSchedulingRunner ssr)java.util.concurrent.ScheduledFuture<?>scheduleWithFixedDelay(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)Schedules a runnable to execute with a fixed delay, and after an initial delay, much likeExecutionManager.registerWithInitialDelay(String, String, Runnable, int, TimeUnit, int).voidshutdown()Stops all execution gracefully.protected voidsynchedUpdateTaskMap(java.lang.String owner, java.lang.String name, java.util.concurrent.ScheduledFuture<?> future)Updates the task map.java.lang.StringtoString()voidunRegister(java.lang.String owner, java.lang.String name)De-registers the execution unit.voidunRegisterAll(java.lang.String owner)Unregisters all tasks for a given owner.voidunSchedule(java.lang.String taskId)
-
-
-
Constructor Detail
-
BasicExecutionEngine
public BasicExecutionEngine()
-
BasicExecutionEngine
public BasicExecutionEngine(int threadCount, java.lang.String name)
-
BasicExecutionEngine
public BasicExecutionEngine(int threadCount, java.lang.String name, boolean daemon)
-
BasicExecutionEngine
public BasicExecutionEngine(int threadCount, java.lang.String name, java.util.concurrent.ThreadFactory threadFactory)
-
-
Method Detail
-
getName
public java.lang.String getName()
-
shutdown
public void shutdown()
Description copied from interface:ExecutionManagerStops all execution gracefully.- Specified by:
shutdownin interfaceExecutionManager
-
schedule
public java.lang.String schedule(java.lang.String taskName, java.lang.Runnable task, java.lang.String cronPattern) throws it.sauronsoftware.cron4j.InvalidPatternException- Throws:
it.sauronsoftware.cron4j.InvalidPatternException
-
unSchedule
public void unSchedule(java.lang.String taskId)
-
register
public void register(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate)Description copied from interface:ExecutionManagerRegisters a command to be executing repeatedly at the specified rate. If the name is already registered, the existing execution unit will be modified.- Specified by:
registerin interfaceExecutionManager- Parameters:
owner- name of the "owner"- just a string qualifier for the command name.name- identifier used in conjunction with the owner to identify the command.command- Runnable to be called at the specified rate.rate- The amount of time to wait in between invocations of the command, in milliseconds.
-
register
public void register(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit)Description copied from interface:ExecutionManagerRegisters a command to be executing repeatedly at the specified rate. If the name is already registered, the existing execution unit will be modified.- Specified by:
registerin interfaceExecutionManager- Parameters:
owner- name of the "owner"- just a string qualifier for the command name.name- identifier used in conjunction with the owner to identify the command.command- Runnable to be called at the specified rate.
-
registerAtFixedRate
public void registerAtFixedRate(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit)Description copied from interface:ExecutionManagerRegisters a command to be executed with a fixed rate rather than a fixed delay.- Specified by:
registerAtFixedRatein interfaceExecutionManager
-
registerAtFixedRateWithInitialDelay
public void registerAtFixedRateWithInitialDelay(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit, int initialDelay)Description copied from interface:ExecutionManagerRegisters a command to be executed with a fixed rate after some initial delay.- Specified by:
registerAtFixedRateWithInitialDelayin interfaceExecutionManager
-
synchedUpdateTaskMap
protected void synchedUpdateTaskMap(java.lang.String owner, java.lang.String name, java.util.concurrent.ScheduledFuture<?> future)Updates the task map. Task map MUST be synchronized before calling this.
-
registerWithInitialDelay
public void registerWithInitialDelay(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, int initialDelay)Description copied from interface:ExecutionManagerRegisters a command to be executing repeatedly at the specified rate with an initial delay.- Specified by:
registerWithInitialDelayin interfaceExecutionManager
-
registerWithInitialDelay
public void registerWithInitialDelay(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int rate, java.util.concurrent.TimeUnit unit, int initialDelay)Description copied from interface:ExecutionManagerRegisters a command to be executing repeatedly at the specified rate with an initial delay.- Specified by:
registerWithInitialDelayin interfaceExecutionManager
-
modify
public void modify(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int newRate, java.util.concurrent.TimeUnit newUnit)Modifies the execution rate of the given execution unit. Basically just unregisters and registers. Can also be used to modify the Runnable associated with the name.
-
modifyFixedRate
public void modifyFixedRate(java.lang.String owner, java.lang.String name, java.lang.Runnable command, int newRate, java.util.concurrent.TimeUnit newUnit)
-
unRegister
public void unRegister(java.lang.String owner, java.lang.String name)De-registers the execution unit. If the unit is in the process of running, it will be interrupted.- Specified by:
unRegisterin interfaceExecutionManager
-
unRegisterAll
public void unRegisterAll(java.lang.String owner)
Unregisters all tasks for a given owner.- Specified by:
unRegisterAllin interfaceExecutionManager
-
executeOnce
public void executeOnce(java.lang.Runnable command)
Executes a runnable one time as soon as possible.- Specified by:
executeOncein interfaceExecutionManager
-
executeOnce
public void executeOnce(java.lang.Runnable command, long delay)Description copied from interface:ExecutionManagerExcutes a runnable one time after a delay, specified in milliseconds- Specified by:
executeOncein interfaceExecutionManager
-
executeOnce
public java.util.concurrent.ScheduledFuture<?> executeOnce(java.lang.Runnable command, long delay, java.util.concurrent.TimeUnit unit) throws java.util.concurrent.RejectedExecutionExceptionExecutes a runnable after a fixed delay- Specified by:
executeOncein interfaceExecutionManager- Throws:
java.util.concurrent.RejectedExecutionException
-
register
public void register(java.lang.String owner, java.lang.String name, SelfSchedulingRunnable command)Description copied from interface:ExecutionManagerRegisters a self scheduling command to be executed. Self scheduling commands provide their own execution delay, which can change from exec to exec.- Specified by:
registerin interfaceExecutionManager
-
scheduleNext
protected void scheduleNext(BasicExecutionEngine.SelfSchedulingRunner ssr)
-
scheduleWithFixedDelay
public java.util.concurrent.ScheduledFuture<?> scheduleWithFixedDelay(java.lang.Runnable command, long initialDelay, long delay, java.util.concurrent.TimeUnit unit)Description copied from interface:ExecutionManagerSchedules a runnable to execute with a fixed delay, and after an initial delay, much likeExecutionManager.registerWithInitialDelay(String, String, Runnable, int, TimeUnit, int). The difference is that this method returns a ScheduledFuture that can be used to cancel the task.- Specified by:
scheduleWithFixedDelayin interfaceExecutionManager
-
getTaskOwners
public java.util.List<java.lang.String> getTaskOwners()
-
getTasks
public java.util.List<TaskStats> getTasks(java.lang.String owner)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-