Class PythonReplayListenerAdapter

All Implemented Interfaces:
LogOutputAppendable, LivenessManager, LivenessNode, LivenessReferent, TableListener, TableUpdateListener, NotificationQueue.Dependency, TableSnapshotReplayer, Serializable

@ScriptApi public class PythonReplayListenerAdapter extends InstrumentedTableUpdateListenerAdapter implements TableSnapshotReplayer
A Deephaven table listener which passes update events to a Python listener object. The listener can also replay the current table snapshot. The Python listener object can be either (1) a callable or (2) an object which provides an "onUpdate" method. In either case, the method must take two arguments (isReplay, updates).
See Also:
  • Method Details

    • create

      public static PythonReplayListenerAdapter create(@Nullable String description, @NotNull @NotNull Table source, boolean retain, @NotNull @NotNull org.jpy.PyObject pyListener, @NotNull @NotNull org.jpy.PyObject pyOnFailureCallback, @Nullable NotificationQueue.Dependency... dependencies)
      Create a Python listener.
      Parameters:
      description - A description for the UpdatePerformanceTracker to append to its entry description, may be null.
      source - The source table to which this listener will subscribe.
      retain - Whether a hard reference to this listener should be maintained to prevent it from being collected.
      pyListener - Python listener object.
      dependencies - The tables that must be satisfied before this listener is executed.
    • replay

      public void replay()
      Description copied from interface: TableSnapshotReplayer
      Replay the current table snapshot into a listener. A shared or exclusive UGP lock should be held when calling this method.
      Specified by:
      replay in interface TableSnapshotReplayer
    • onUpdate

      public void onUpdate(TableUpdate update)
      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.

      Specified by:
      onUpdate in interface TableUpdateListener
      Specified by:
      onUpdate in class InstrumentedTableUpdateListenerAdapter
      Parameters:
      update - The set of upstream table updates.
    • onFailureInternal

      public void onFailureInternal(Throwable originalException, TableListener.Entry sourceEntry)
      Description copied from class: InstrumentedTableUpdateListenerAdapter
      Called when the source table produces an error
      Overrides:
      onFailureInternal in class InstrumentedTableUpdateListenerAdapter
      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 InstrumentedTableUpdateListenerAdapter
    • isFailed

      public boolean isFailed()