Class ShiftObliviousInstrumentedListenerAdapter

All Implemented Interfaces:
LogOutputAppendable, LivenessManager, LivenessNode, LivenessReferent, ShiftObliviousListener, TableListener, NotificationQueue.Dependency, Serializable
Direct Known Subclasses:
PythonReplayShiftObliviousListenerAdapter, PythonShiftObliviousListenerAdapter

public abstract class ShiftObliviousInstrumentedListenerAdapter extends ShiftObliviousInstrumentedListener
This class is used for Listeners that represent "leaf" nodes in the update propagation tree. It provides an optional retention cache, to prevent listeners from being garbage collected. For creating internally ticking table nodes, instead use BaseTable.ShiftObliviousListenerImpl
See Also:
  • Field Details

  • Constructor Details

    • ShiftObliviousInstrumentedListenerAdapter

      public ShiftObliviousInstrumentedListenerAdapter(@NotNull @NotNull Table source, boolean retain)
      Create an instrumented listener for source. No description is provided.
      Parameters:
      source - The source table this listener will subscribe to - needed for preserving referential integrity
      retain - Whether a hard reference to this listener should be maintained to prevent it from being collected. In most scenarios, it's better to specify false and keep a reference in the calling code.
    • ShiftObliviousInstrumentedListenerAdapter

      public ShiftObliviousInstrumentedListenerAdapter(@Nullable @Nullable String description, @NotNull @NotNull Table source, boolean retain)
      Parameters:
      description - A description for the UpdatePerformanceTracker to append to its entry description.
      source - The source table this listener will subscribe to - needed for preserving referential integrity.
      retain - Whether a hard reference to this listener should be maintained to prevent it from being collected. In most scenarios, it's better to specify false and keep a reference in the calling code.
  • Method Details

    • onUpdate

      public abstract void onUpdate(RowSet added, RowSet removed, RowSet modified)
      Description copied from interface: ShiftObliviousListener
      Process notification of table changes.

      The ShiftObliviousListener onUpdate call executes within the UpdateGraph refresh loop. Any tables used within the listener's onUpdate call must have already been refreshed. Using the typical pattern of a Listener that is listening to a single table, with Table.addUpdateListener(ShiftObliviousListener), this is trivially true.

      When the listener must reference more than just one parent, the tables (or other objects) it references, must be made a NotificationQueue.Dependency of the listener. For listeners that reference multiple ticking tables, a common pattern is to use a MergedListener and collection of ListenerRecorders.

      Parameters:
      added - rows added
      removed - rows removed
      modified - rows modified
    • onFailureInternal

      public void onFailureInternal(Throwable originalException, TableListener.Entry sourceEntry)
      Called when the source table produces an error
      Specified by:
      onFailureInternal in class InstrumentedTableListenerBase
      Parameters:
      originalException - the original throwable that caused this error
      sourceEntry - the performance tracker entry that was active when the error occurred
    • canExecute

      public boolean canExecute(long step)
      Overrides:
      canExecute in class InstrumentedTableListenerBase
    • destroy

      @OverridingMethodsMustInvokeSuper protected void destroy()
      Description copied from class: ReferenceCountedLivenessReferent
      Attempt to release (destructively when necessary) resources held by this object. This may render the object unusable for subsequent operations. Implementations should be sure to call super.destroy().

      This is intended to only ever be used as a side effect of decreasing the reference count to 0.

      Overrides:
      destroy in class ReferenceCountedLivenessReferent