Class PythonReplayShiftObliviousListenerAdapter

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

@ScriptApi public class PythonReplayShiftObliviousListenerAdapter extends ShiftObliviousInstrumentedListenerAdapter 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 four arguments (isReplay, added, removed, modified).
See Also:
  • Constructor Details

    • PythonReplayShiftObliviousListenerAdapter

      public PythonReplayShiftObliviousListenerAdapter(Table source, org.jpy.PyObject pyObjectIn)
      Create a Python listener. No description for this listener will be provided. A hard reference to this listener will be maintained to prevent garbage collection. See PythonReplayShiftObliviousListenerAdapter(String, Table, boolean, PyObject) if you do not want to prevent garbage collection of this listener.
      Parameters:
      source - The source table to which this listener will subscribe.
      pyObjectIn - Python listener object.
    • PythonReplayShiftObliviousListenerAdapter

      public PythonReplayShiftObliviousListenerAdapter(String description, Table source, org.jpy.PyObject pyObjectIn)
      Create a Python listener. A hard reference to this listener will be maintained to prevent garbage collection. See PythonReplayShiftObliviousListenerAdapter(String, Table, boolean, PyObject) if you do not want to prevent garbage collection of this listener.
      Parameters:
      description - A description for the UpdatePerformanceTracker to append to its entry description.
      source - The source table to which this listener will subscribe.
      pyObjectIn - Python listener object.
    • PythonReplayShiftObliviousListenerAdapter

      public PythonReplayShiftObliviousListenerAdapter(String description, Table source, boolean retain, org.jpy.PyObject pyObjectIn)
      Create a Python listener.
      Parameters:
      description - A description for the UpdatePerformanceTracker to append to its entry description.
      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.
      pyObjectIn - Python listener object.
  • Method Details

    • 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(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.

      Specified by:
      onUpdate in interface ShiftObliviousListener
      Specified by:
      onUpdate in class ShiftObliviousInstrumentedListenerAdapter
      Parameters:
      added - rows added
      removed - rows removed
      modified - rows modified