Package io.deephaven.engine.table.impl
Class ListenerRecorder
java.lang.Object
- All Implemented Interfaces:
LogOutputAppendable,LivenessManager,LivenessNode,LivenessReferent,TableListener,TableUpdateListener,NotificationQueue.Dependency,Serializable
- Direct Known Subclasses:
JoinListenerRecorder
A listener recorder stores references to added, removed, modified, and shifted indices; and then notifies a
MergedListener that a change has occurred. The combination of a ListenerRecorder and
MergedListener should be used when a table has multiple sources, such that each table can process all of its
dependencies at once and fire a single notification to its children.- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class io.deephaven.engine.table.impl.InstrumentedTableUpdateListener
InstrumentedTableUpdateListener.NotificationNested classes/interfaces inherited from class io.deephaven.engine.table.impl.InstrumentedTableListenerBase
InstrumentedTableListenerBase.ErrorNotification, InstrumentedTableListenerBase.NotificationBaseNested 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
ConstructorsConstructorDescriptionListenerRecorder(@NotNull String description, @NotNull Table parent, @Nullable Object dependent) -
Method Summary
Modifier and TypeMethodDescriptionbooleancanExecute(long step) protected voiddestroy()Attempt to release (destructively when necessary) resources held by this object.getAdded()longprotected voidonFailureInternal(@NotNull Throwable originalException, @Nullable TableListener.Entry sourceEntry) voidonUpdate(TableUpdate upstream) Process notification of table changes.booleanvoidrelease()voidsetMergedListener(MergedListener mergedListener) protected voidsetNotificationStep(long step) Methods inherited from class io.deephaven.engine.table.impl.InstrumentedTableUpdateListener
getNotificationMethods inherited from class io.deephaven.engine.table.impl.InstrumentedTableListenerBase
append, getEntry, getErrorNotification, getUpdateGraph, onFailure, onFailureInternalWithDependent, satisfied, setVerboseLogging, toStringMethods inherited from class io.deephaven.engine.liveness.LivenessArtifact
manageWithCurrentScopeMethods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessNode
ensureCleanupOnGC, findAnyManagedReferent, forEachManagedReference, getWeakReference, initializeTransientFieldsForLiveness, onReferenceCountAtZero, tryManage, tryUnmanage, tryUnmanageMethods inherited from class io.deephaven.engine.liveness.ReferenceCountedLivenessReferent
dropReference, tryRetainReferenceMethods inherited from class io.deephaven.util.referencecounting.ReferenceCounted
decrementReferenceCount, forceReferenceCountToZero, getReferenceCountDebug, incrementReferenceCount, resetReferenceCount, tryDecrementReferenceCount, tryIncrementReferenceCountMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface io.deephaven.engine.liveness.LivenessManager
manage, tryManage, tryUnmanage, tryUnmanage, unmanage, unmanageMethods inherited from interface io.deephaven.engine.liveness.LivenessReferent
dropReference, getReferentDescription, getWeakReference, retainReference, tryRetainReferenceMethods inherited from interface io.deephaven.engine.updategraph.NotificationQueue.Dependency
getUpdateGraphMethods inherited from interface io.deephaven.engine.table.TableListener
getErrorNotification, onFailure
-
Field Details
-
parent
-
logPrefix
-
-
Constructor Details
-
ListenerRecorder
-
-
Method Details
-
getParent
-
release
public void release() -
onUpdate
Description copied from interface:TableUpdateListenerProcess notification of table changes.The TableUpdateListener onUpdate call executes within the
UpdateGraphrefresh 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(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.Dependencyof 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
protected void onFailureInternal(@NotNull @NotNull Throwable originalException, @Nullable @Nullable TableListener.Entry sourceEntry) - Specified by:
onFailureInternalin classInstrumentedTableListenerBase
-
setNotificationStep
protected void setNotificationStep(long step) -
canExecute
public boolean canExecute(long step) - Overrides:
canExecutein classInstrumentedTableListenerBase
-
destroy
@OverridingMethodsMustInvokeSuper protected void destroy()Description copied from class:ReferenceCountedLivenessReferentAttempt 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:
destroyin classReferenceCountedLivenessReferent
-
recordedVariablesAreValid
public boolean recordedVariablesAreValid() -
setMergedListener
-
getNotificationStep
public long getNotificationStep() -
getAdded
-
getRemoved
-
getModified
-
getModifiedPreShift
-
getShifted
-
getModifiedColumnSet
-
getUpdate
-