Class PollingBlockingTask
java.lang.Object
com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle
com.inductiveautomation.ignition.common.execution.PollingBlockingTask
- Direct Known Subclasses:
PerspectivePollingBlockingTask
Scaffolding for managing the execution of a blocking task that may need to poll or be executed on-demand.
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionPollingBlockingTask
(ScheduledExecutorService scheduler, ExecutorService executor, Runnable task, long rate, TimeUnit rateTimeUnit, String diagnosticId) -
Method Summary
Modifier and TypeMethodDescriptionprotected long
Default implementation returns the rate from the constructor, but provides a place for subclasses to re-define the rate on startup if necessary.protected void
protected void
void
void
Submits the task immediately if currently idle or scheduled.Methods inherited from class com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle
isRunning, shutdown, startup
-
Field Details
-
LOG
-
-
Constructor Details
-
PollingBlockingTask
public PollingBlockingTask(ScheduledExecutorService scheduler, ExecutorService executor, Runnable task, long rate, TimeUnit rateTimeUnit, String diagnosticId) - Parameters:
scheduler
- No blocking work will be done on this schedulerexecutor
- Blocking work will be done on this executortask
- The task to execute, blocking is acceptablerate
- If positive, the task will be executed once on startup, and then repeatedly with this amount of time as a delay between executions. If zero or less, will be executed once on startup, and again wheneversubmitIfIdle()
is called.rateTimeUnit
- Time unit for the rate.diagnosticId
- Will be set during task execution using MDC as "task-id" key
-
-
Method Details
-
submitIfIdle
public void submitIfIdle()Submits the task immediately if currently idle or scheduled. -
getInitialRate
protected long getInitialRate()Default implementation returns the rate from the constructor, but provides a place for subclasses to re-define the rate on startup if necessary. -
onStartup
protected void onStartup()- Specified by:
onStartup
in classAbstractLifecycle
-
onShutdown
protected void onShutdown()- Specified by:
onShutdown
in classAbstractLifecycle
-
setRate
-