Class AbstractCycleWorker

java.lang.Object
io.openems.common.worker.AbstractWorker
io.openems.common.worker.AbstractCycleWorker
Direct Known Subclasses:
BoschBpts5HybridReadWorker, DezonyReadWorker, DiscovergyWorker, HardyBarthReadWorker, ReadWorker, Worker

public abstract class AbstractCycleWorker extends AbstractWorker
Defines a generic Worker Thread.

The business logic of the Worker is inside the forever() method. It is executed after triggered the AbstractWorker.triggerNextRun() method.

This implementation is helpful to execute logic synchronized with the OpenEMS Edge Cycle. Be sure to call 'triggerNextCycle()' once per Cycle (using an OSGi EventHandler).

  • Constructor Details

    • AbstractCycleWorker

      public AbstractCycleWorker()
  • Method Details

    • activate

      public void activate(String name)
      Description copied from class: AbstractWorker
      Initializes the worker and starts the worker thread.
      Overrides:
      activate in class AbstractWorker
      Parameters:
      name - the name of the worker thread
    • deactivate

      public void deactivate()
      Description copied from class: AbstractWorker
      Stops the worker thread.
      Overrides:
      deactivate in class AbstractWorker
    • getCycleTime

      protected final int getCycleTime()
      Description copied from class: AbstractWorker
      Gets the cycleTime of this worker in [ms].
      • > 0 sets the minimum execution time of one Cycle
      • = 0 never wait between two consecutive executions of forever()
      • < 0 causes the Cycle to sleep forever until 'triggerNextRun()' is called
      Specified by:
      getCycleTime in class AbstractWorker
      Returns:
      the cycleTime
    • forever

      protected abstract void forever() throws Throwable
      Description copied from class: AbstractWorker
      This method is called in a loop forever until the Thread gets interrupted.
      Specified by:
      forever in class AbstractWorker
      Throws:
      Throwable