Class PollingBlockingTask

java.lang.Object
com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle
com.inductiveautomation.ignition.common.execution.PollingBlockingTask
Direct Known Subclasses:
PerspectivePollingBlockingTask

public class PollingBlockingTask extends AbstractLifecycle
Scaffolding for managing the execution of a blocking task that may need to poll or be executed on-demand.
  • Field Details

    • LOG

      protected static final LoggerEx 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 scheduler
      executor - Blocking work will be done on this executor
      task - The task to execute, blocking is acceptable
      rate - 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 whenever submitIfIdle() 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 class AbstractLifecycle
    • onShutdown

      protected void onShutdown()
      Specified by:
      onShutdown in class AbstractLifecycle
    • setRate

      public void setRate(long rate, TimeUnit unit)