Class IteratingNestedCallback
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.
- 
Nested Class Summary
Nested classes/interfaces inherited from class IteratingCallback
IteratingCallback.ActionNested classes/interfaces inherited from interface Callback
Callback.Combination, Callback.Completable, Callback.Completing, Callback.NestedNested classes/interfaces inherited from interface Invocable
Invocable.Callable, Invocable.InvocationType, Invocable.ReadyTask, Invocable.Task - 
Field Summary
Fields inherited from interface Callback
NOOP, NOT_CALLEDFields inherited from interface Invocable
__nonBlocking - 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionprotected voidInvoked when the overall task has completed successfully, specifically after anyIteratingCallback.Action.SCHEDULEDoperations haveCallback.succeeded()andIteratingCallback.process()has returnedIteratingCallback.Action.SUCCEEDED.protected voidtoString()Methods inherited from class IteratingCallback
abort, close, failed, isAborted, isClosed, isFailed, isSucceeded, iterate, onAborted, onCompleted, onCompleteFailure, onSuccess, process, reset, succeededMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Callback
completeWith 
- 
Constructor Details
- 
IteratingNestedCallback
 
 - 
 - 
Method Details
- 
getInvocationType
- Returns:
 - The InvocationType of this object
 
 - 
onCompleteSuccess
protected void onCompleteSuccess()Description copied from class:IteratingCallbackInvoked when the overall task has completed successfully, specifically after anyIteratingCallback.Action.SCHEDULEDoperations haveCallback.succeeded()andIteratingCallback.process()has returnedIteratingCallback.Action.SUCCEEDED.Calls to this method are serialized with respect to
IteratingCallback.process(),IteratingCallback.onAborted(Throwable)andIteratingCallback.onCompleted(Throwable). If this method is called, thenIteratingCallback.onCompleteFailure(Throwable)()} will never be called.- Overrides:
 onCompleteSuccessin classIteratingCallback- See Also:
 
 - 
onFailure
Description copied from class:IteratingCallbackInvoked when the overall task has beenabortedorfailed.Calls to this method are serialized with respect to
IteratingCallback.onAborted(Throwable),IteratingCallback.process(),IteratingCallback.onCompleteFailure(Throwable)andIteratingCallback.onCompleted(Throwable).Because
onFailurecan be called due to anIteratingCallback.abort(Throwable)orIteratingCallback.close()operation, it is possible that any resources passed to aIteratingCallback.Action.SCHEDULEDoperation may still be in use, and thus should not be recycled by this call. For example any buffers passed to a write operation should not be returned to a buffer pool by implementations ofonFailure. Such resources may be discarded here, or safely recycled in a subsequent call toIteratingCallback.onCompleted(Throwable)orIteratingCallback.onCompleteFailure(Throwable), when theIteratingCallback.Action.SCHEDULEDoperation has completed.- Overrides:
 onFailurein classIteratingCallback- Parameters:
 x- The cause of the failure or abort- See Also:
 
 - 
toString
- Overrides:
 toStringin classIteratingCallback
 
 -