Package io.deephaven.engine.table.impl
Class ShiftObliviousInstrumentedListenerAdapter
java.lang.Object
io.deephaven.util.referencecounting.ReferenceCounted
io.deephaven.engine.liveness.ReferenceCountedLivenessReferent
io.deephaven.engine.liveness.ReferenceCountedLivenessNode
io.deephaven.engine.liveness.LivenessArtifact
io.deephaven.engine.table.impl.InstrumentedTableListenerBase
io.deephaven.engine.table.impl.ShiftObliviousInstrumentedListener
io.deephaven.engine.table.impl.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:
-
Nested Class Summary
Nested classes/interfaces inherited from class io.deephaven.engine.table.impl.ShiftObliviousInstrumentedListener
ShiftObliviousInstrumentedListener.Notification
Nested classes/interfaces inherited from class io.deephaven.engine.table.impl.InstrumentedTableListenerBase
InstrumentedTableListenerBase.ErrorNotification, InstrumentedTableListenerBase.NotificationBase
Nested classes/interfaces inherited from interface io.deephaven.engine.table.TableListener
TableListener.Entry
-
Field Summary
FieldsFields inherited from class io.deephaven.engine.table.impl.InstrumentedTableListenerBase
failed
-
Constructor Summary
ConstructorsConstructorDescriptionShiftObliviousInstrumentedListenerAdapter
(@NotNull Table source, boolean retain) Create an instrumented listener for source.ShiftObliviousInstrumentedListenerAdapter
(@Nullable String description, @NotNull Table source, boolean retain) -
Method Summary
Modifier and TypeMethodDescriptionboolean
canExecute
(long step) protected void
destroy()
Attempt to release (destructively when necessary) resources held by this object.void
onFailureInternal
(Throwable originalException, TableListener.Entry sourceEntry) Called when the source table produces an errorabstract void
Process notification of table changes.Methods inherited from class io.deephaven.engine.table.impl.ShiftObliviousInstrumentedListener
getNotification, setInitialImage
Methods inherited from class io.deephaven.engine.table.impl.InstrumentedTableListenerBase
append, getEntry, getErrorNotification, getUpdateGraph, onFailure, onFailureInternalWithDependent, satisfied, setVerboseLogging, toString
Methods inherited from class io.deephaven.engine.liveness.LivenessArtifact
manageWithCurrentScope
Methods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessNode
getWeakReference, initializeTransientFieldsForLiveness, onReferenceCountAtZero, tryManage, tryUnmanage, tryUnmanage
Methods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessReferent
dropReference, tryRetainReference
Methods inherited from class io.deephaven.util.referencecounting.ReferenceCounted
decrementReferenceCount, forceReferenceCountToZero, getReferenceCountDebug, incrementReferenceCount, resetReferenceCount, tryDecrementReferenceCount, tryIncrementReferenceCount
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.deephaven.engine.liveness.LivenessManager
manage, tryManage, tryUnmanage, tryUnmanage, unmanage, unmanage
Methods inherited from interface io.deephaven.engine.liveness.LivenessReferent
dropReference, getReferentDescription, getWeakReference, retainReference, tryRetainReference
Methods inherited from interface io.deephaven.engine.updategraph.NotificationQueue.Dependency
getUpdateGraph
Methods inherited from interface io.deephaven.engine.table.TableListener
getErrorNotification, onFailure
-
Field Details
-
source
-
-
Constructor Details
-
ShiftObliviousInstrumentedListenerAdapter
Create an instrumented listener for source. No description is provided.- Parameters:
source
- The source table this listener will subscribe to - needed for preserving referential integrityretain
- Whether a hard reference to this listener should be maintained to prevent it from being collected. In most scenarios, it's better to specifyfalse
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 specifyfalse
and keep a reference in the calling code.
-
-
Method Details
-
onUpdate
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, withTable.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 addedremoved
- rows removedmodified
- rows modified
-
onFailureInternal
Called when the source table produces an error- Specified by:
onFailureInternal
in classInstrumentedTableListenerBase
- Parameters:
originalException
- the original throwable that caused this errorsourceEntry
- the performance tracker entry that was active when the error occurred
-
canExecute
public boolean canExecute(long step) - Overrides:
canExecute
in classInstrumentedTableListenerBase
-
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 classReferenceCountedLivenessReferent
-