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.
  • 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