Package io.deephaven.engine.updategraph
Class AbstractNotification
java.lang.Object
io.deephaven.engine.updategraph.AbstractNotification
- All Implemented Interfaces:
LogOutputAppendable
,NotificationQueue.Notification
,IntrusiveDoublyLinkedNode<NotificationQueue.Notification>
,Runnable
- Direct Known Subclasses:
EmptyNotification
,InstrumentedTableListenerBase.ErrorNotification
,InstrumentedTableListenerBase.NotificationBase
,NotificationAdapter
,TerminalNotification
,WaitNotification
Common base class for notifications.
-
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>>
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptiongetNext()
Get the next node after this node.getPrev()
Get the previous node before this node.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.void
Set this node's next node.void
Set this node's previous node.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.deephaven.engine.updategraph.NotificationQueue.Notification
canExecute
-
Constructor Details
-
AbstractNotification
protected AbstractNotification(boolean isTerminal)
-
-
Method Details
-
mustExecuteWithUpdateGraphLock
public boolean mustExecuteWithUpdateGraphLock()Description copied from interface:NotificationQueue.Notification
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
- Specified by:
mustExecuteWithUpdateGraphLock
in interfaceNotificationQueue.Notification
- Returns:
- true if this notification must be executed serially
-
toString
-
append
- Specified by:
append
in interfaceLogOutputAppendable
-
isTerminal
public boolean isTerminal()Description copied from interface:NotificationQueue.Notification
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.- Specified by:
isTerminal
in interfaceNotificationQueue.Notification
- Returns:
- True iff this notification is terminal.
-
getNext
Description copied from interface:IntrusiveDoublyLinkedNode
Get the next node after this node.- Specified by:
getNext
in interfaceIntrusiveDoublyLinkedNode<NotificationQueue.Notification>
- Returns:
- This node's next node
-
setNext
Description copied from interface:IntrusiveDoublyLinkedNode
Set this node's next node.- Specified by:
setNext
in interfaceIntrusiveDoublyLinkedNode<NotificationQueue.Notification>
- Parameters:
other
- This node's new next node
-
getPrev
Description copied from interface:IntrusiveDoublyLinkedNode
Get the previous node before this node.- Specified by:
getPrev
in interfaceIntrusiveDoublyLinkedNode<NotificationQueue.Notification>
- Returns:
- This node's previous node
-
setPrev
Description copied from interface:IntrusiveDoublyLinkedNode
Set this node's previous node.- Specified by:
setPrev
in interfaceIntrusiveDoublyLinkedNode<NotificationQueue.Notification>
- Parameters:
other
- This node's new previous node
-