Class IteratingNestedCallback

java.lang.Object
org.eclipse.jetty.util.IteratingCallback
org.eclipse.jetty.util.IteratingNestedCallback
All Implemented Interfaces:
Callback, Invocable

public abstract class IteratingNestedCallback extends IteratingCallback
Iterating Nested Callback.

This specialized callback is used when breaking up an asynchronous task into smaller asynchronous tasks. A typical pattern is that a successful callback is used to schedule the next subtask, but if that task completes quickly and uses the calling thread to call back the success notification, this can result in a growing stack depth.

To avoid this issue, this callback uses an AtomicBoolean to note if the success callback has been called during the processing of a subtask, and if so then the processing iterates rather than recurses.

This callback is passed to the asynchronous handling of each subtask and a call the IteratingCallback.succeeded() on this call back represents completion of the subtask. Only once all the subtasks are completed is the Callback.succeeded() method called on the Callback instance passed the IteratingNestedCallback(Callback) constructor.