Class InstrumentedTableUpdateListenerAdapter

All Implemented Interfaces:
LogOutputAppendable, LivenessManager, LivenessNode, LivenessReferent, TableListener, TableUpdateListener, NotificationQueue.Dependency, Serializable
Direct Known Subclasses:
PythonListenerAdapter, PythonReplayListenerAdapter, ToMapListener

public abstract class InstrumentedTableUpdateListenerAdapter extends InstrumentedTableUpdateListener
This class is used for ShiftAwareListeners 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.ListenerImpl
See Also:
  • Field Details

  • Constructor Details

    • InstrumentedTableUpdateListenerAdapter

      public InstrumentedTableUpdateListenerAdapter(@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.
    • InstrumentedTableUpdateListenerAdapter

      public InstrumentedTableUpdateListenerAdapter(@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(TableUpdate upstream)
      Description copied from interface: TableUpdateListener
      Process notification of table changes.

      The TableUpdateListener 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(TableUpdateListener), 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:
      upstream - The set of upstream table updates.
    • 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

      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