Class ModelFarmRealTime<KEYTYPE,DATATYPE,ROWDATAMANAGERTYPE extends RowDataManager<KEYTYPE,DATATYPE>>

java.lang.Object
io.deephaven.modelfarm.ModelFarmBase<DATATYPE>
io.deephaven.modelfarm.RDMModelFarm<KEYTYPE,DATATYPE,ROWDATAMANAGERTYPE>
io.deephaven.modelfarm.ModelFarmRealTime<KEYTYPE,DATATYPE,ROWDATAMANAGERTYPE>
Type Parameters:
KEYTYPE - unique ID key type
DATATYPE - data type
All Implemented Interfaces:
ModelFarm

public class ModelFarmRealTime<KEYTYPE,DATATYPE,ROWDATAMANAGERTYPE extends RowDataManager<KEYTYPE,DATATYPE>> extends RDMModelFarm<KEYTYPE,DATATYPE,ROWDATAMANAGERTYPE>
A multithreaded resource to execute data driven models. Every time a row of the data table ticks, the unique identifier is queued for execution. Once the security reaches the top of the execution queue, the most recent data for the unique identifier is used for execution.

This is useful for real-time processing, where executing unique identifiers as fast as possible is desired.

The execution priority is determined by how long it has been since the data changed. The prioritizer can be used to bump a unique identifier to a higher execution priority.

  • Constructor Details

    • ModelFarmRealTime

      public ModelFarmRealTime(int nThreads, Model<DATATYPE> model, ROWDATAMANAGERTYPE dataManager, ExecPrioritizer<KEYTYPE,DATATYPE,ROWDATAMANAGERTYPE> prioritizer)
      Create a multithreaded resource to execute data driven models.
      Parameters:
      nThreads - number of worker threads.
      model - model to execute.
      dataManager - interface for accessing and querying data contained in rows of a dynamic table.
      prioritizer - utility for computing the execution priority.
  • Method Details

    • onDataUpdate

      protected void onDataUpdate(RowSet added, RowSet removed, RowSet modified)
      Description copied from class: RDMModelFarm
      Process a change to the data table. If the data table is being accessed, use the protected column source fields.
      Specified by:
      onDataUpdate in class RDMModelFarm<KEYTYPE,DATATYPE,ROWDATAMANAGERTYPE extends RowDataManager<KEYTYPE,DATATYPE>>
      Parameters:
      added - new indexes added to the data table
      removed - indexes removed from the data table
      modified - indexes modified in the data table.
    • isQueueEmpty

      protected boolean isQueueEmpty()
      Description copied from class: ModelFarmBase
      Returns true if the model farm queue is empty and false if the queue contains elements to execute.
      Specified by:
      isQueueEmpty in class ModelFarmBase<DATATYPE>
      Returns:
      true if the model farm queue is empty and false if the queue contains elements to execute.
    • execute

      protected void execute() throws InterruptedException
      Description copied from class: ModelFarmBase
      Executes the next task in the work queue.
      Specified by:
      execute in class ModelFarmBase<DATATYPE>
      Throws:
      InterruptedException - if interrupted while executing
    • requestUpdateMaxPriority

      public boolean requestUpdateMaxPriority(KEYTYPE key)
      Request an update for the given key with the maximum priority level.
      Parameters:
      key - The key to update.
      Returns:
      true if the element was newly inserted to the queue or reinserted with a higher priority, otherwise false.
    • requestUpdate

      public boolean requestUpdate(KEYTYPE key, int priority)
      Request an update for the given key with the specified priority level.
      Parameters:
      key - The key to update.
      priority - The priority with which the key should be updated.
      Returns:
      true if the element was newly inserted to the queue or reinserted with a higher priority, otherwise false.