Package io.deephaven.engine.updategraph
Interface NotificationQueue.Notification
- All Superinterfaces:
IntrusiveDoublyLinkedNode<NotificationQueue.Notification>
,LogOutputAppendable
,Runnable
- All Known Subinterfaces:
NotificationQueue.ErrorNotification
- All Known Implementing Classes:
AbstractNotification
,EmptyErrorNotification
,EmptyNotification
,InstrumentedTableListenerBase.ErrorNotification
,InstrumentedTableListenerBase.NotificationBase
,InstrumentedTableUpdateListener.Notification
,NotificationAdapter
,ShiftObliviousInstrumentedListener.Notification
,TerminalNotification
,UpdateCommitter
,UpdateCommitterEx
,WaitNotification
- Enclosing interface:
- NotificationQueue
public static interface NotificationQueue.Notification
extends Runnable, LogOutputAppendable, IntrusiveDoublyLinkedNode<NotificationQueue.Notification>
A notification that may be enqueued.
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.deephaven.util.datastructures.linked.IntrusiveDoublyLinkedNode
IntrusiveDoublyLinkedNode.Adapter<NODE_TYPE extends IntrusiveDoublyLinkedNode<NODE_TYPE>>, IntrusiveDoublyLinkedNode.Impl<NODE_TYPE extends IntrusiveDoublyLinkedNode.Impl<NODE_TYPE>>
-
Method Summary
Modifier and TypeMethodDescriptionboolean
canExecute
(long step) Can this notification be executed? That is, are all of it's dependencies satisfied.boolean
Terminal notifications guarantee that they will not queue additional notifications or mutate data structures that should result in additional notifications.boolean
If a terminal notification must be executed serially (typically under an UpdateGraph's exclusive lock), it must override this method so that the notification is not executed concurrently with other notifications.Methods inherited from interface io.deephaven.util.datastructures.linked.IntrusiveDoublyLinkedNode
getNext, getPrev, setNext, setPrev
Methods inherited from interface io.deephaven.base.log.LogOutputAppendable
append
-
Method Details
-
isTerminal
boolean isTerminal()Terminal notifications guarantee that they will not queue additional notifications or mutate data structures that should result in additional notifications. They are in turn guaranteed to be called after all non-terminal notifications for a given cycle through the notification queue.- Returns:
- True iff this notification is terminal.
-
mustExecuteWithUpdateGraphLock
boolean mustExecuteWithUpdateGraphLock()If a terminal notification must be executed serially (typically under an UpdateGraph's exclusive lock), it must override this method so that the notification is not executed concurrently with other notifications.It is an error to return true if this notification is not terminal
- Returns:
- true if this notification must be executed serially
-
canExecute
boolean canExecute(long step) Can this notification be executed? That is, are all of it's dependencies satisfied.- Parameters:
step
- The step for which we are testing satisfaction- Returns:
- true if this notification can be executed, false if it has unmet dependencies
-