Package com.illumon.iris.db.tables.live
Interface NotificationQueue.Notification
- All Superinterfaces:
IntrusiveDoublyLinkedNode<NotificationQueue.Notification>
,com.fishlib.base.log.LogOutputAppendable
,Runnable
- All Known Subinterfaces:
NotificationQueue.IndexUpdateNotification
- All Known Implementing Classes:
AbstractIndexUpdateNotification
,AbstractNotification
,InstrumentedListener.Notification
,InstrumentedListenerBase.ErrorNotification
,InstrumentedListenerBase.NotificationBase
,InstrumentedShiftAwareListener.Notification
,NotificationWrapper
,NullIndexUpdateNotification
,TerminalNotification
,UpdateCommitter
,WaitNotification
- Enclosing interface:
- NotificationQueue
public static interface NotificationQueue.Notification extends Runnable, com.fishlib.base.log.LogOutputAppendable, IntrusiveDoublyLinkedNode<NotificationQueue.Notification>
A notification that may be enqueued.
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.illumon.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 Type Method Description boolean
canExecute(long step)
Can this notification be executed? That is, are all of it's dependencies satisfied.boolean
isTerminal()
Terminal notifications guarantee that they will not queue additional notifications or mutate data structures that should result in additional notifications.boolean
mustExecuteWithLtmLock()
If a terminal notification must be executed on the main LTM thread, it must override this method, so that the notification is not executed on the refresh pool.Methods inherited from interface com.illumon.util.datastructures.linked.IntrusiveDoublyLinkedNode
getNext, getPrev, setNext, setPrev
-
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.
-
mustExecuteWithLtmLock
boolean mustExecuteWithLtmLock()If a terminal notification must be executed on the main LTM thread, it must override this method, so that the notification is not executed on the refresh pool. It is an error to return true if this notification is not terminal- Returns:
- true if this notification must be executed directly under the protection of the LTM lock
-
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
-