Package com.illumon.iris.db.tables.live
Class WaitNotification
java.lang.Object
com.illumon.iris.db.v2.utils.AbstractNotification
com.illumon.iris.db.tables.live.WaitNotification
- All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable
,NotificationQueue.Notification
,IntrusiveDoublyLinkedNode<NotificationQueue.Notification>
,Runnable
public final class WaitNotification extends AbstractNotification
One-shot
NotificationQueue.Notification
that can be delivered when a set of
dependencies
are satisfied.
This allows for an external observer to wait for multiple dependencies to be satisfied using
waitForSatisfaction(long, NotificationQueue.Dependency...)
.-
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 com.fishlib.base.log.LogOutput
append(com.fishlib.base.log.LogOutput logOutput)
boolean
canExecute(long step)
Can this notification be executed? That is, are all of it's dependencies satisfied.void
run()
static boolean
waitForSatisfaction(long step, NotificationQueue.Dependency... dependencies)
Wait for all of the specified dependencies to be satisfied on the specified step.Methods inherited from class com.illumon.iris.db.v2.utils.AbstractNotification
getNext, getPrev, isTerminal, mustExecuteWithLtmLock, setNext, setPrev, toString
-
Method Details
-
canExecute
public boolean canExecute(long step)Description copied from interface:NotificationQueue.Notification
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
-
append
public com.fishlib.base.log.LogOutput append(com.fishlib.base.log.LogOutput logOutput)- Specified by:
append
in interfacecom.fishlib.base.log.LogOutputAppendable
- Overrides:
append
in classAbstractNotification
-
run
public void run() -
waitForSatisfaction
public static boolean waitForSatisfaction(long step, @NotNull NotificationQueue.Dependency... dependencies)Wait for all of the specified dependencies to be satisfied on the specified step.- Parameters:
step
- The step to wait for satisfaction ondependencies
- The dependencies to wait for- Returns:
- True if the dependencies became satisfied on the specified step, false if the cycle had already completed
-