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