A promise combiner monitors the outcome of a number of discrete futures, then notifies a final, aggregate promise when all of the combined futures are finished. The aggregate promise will succeed if and only if all of the combined futures succeed. If any of the combined futures fail, the aggregate promise will fail. The cause failure for the aggregate promise will be the failure for one of the failed combined futures; if more than one of the combined futures fails, exactly which cause of failure will be assigned to the aggregate promise is undefined.
Callers may populate a promise combiner with any number of futures to be combined via the
PromiseCombiner#add(Future) and PromiseCombiner#addAll(Future[]) methods. When all futures to be
combined have been added, callers must provide an aggregate promise to be notified when all combined promises have
finished via the PromiseCombiner#finish(Promise) method.
This implementation is NOT thread-safe and all methods must be called
from the EventExecutor thread.
| Modifier and Type | Field and Description |
|---|---|
| private Promise | |
| private Throwable | |
| private int | |
| private final EventExecutor | |
| private int | |
| private final FutureListener |
| Access | Constructor and Description |
|---|---|
| public | PromiseCombiner(EventExecutor
the executor)EventExecutor to use for notifications.The |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public void | |
| private void | |
| private void | |
| public void | |
| private boolean |
| aggregatePromise | back to summary |
|---|---|
| private Promise<Void> aggregatePromise | |
| cause | back to summary |
|---|---|
| private Throwable cause | |
| doneCount | back to summary |
|---|---|
| private int doneCount | |
| executor | back to summary |
|---|---|
| private final EventExecutor executor | |
| expectedCount | back to summary |
|---|---|
| private int expectedCount | |
| listener | back to summary |
|---|---|
| private final FutureListener<Object> listener | |
| PromiseCombiner | back to summary |
|---|---|
| public PromiseCombiner(EventExecutor executor) The
| |
| add | back to summary |
|---|---|
| public void add(Future<?> future) Adds a new future to be combined. New futures may be added until an aggregate promise is added via the
| |
| addAll | back to summary |
|---|---|
| public void addAll(Future<?>... futures) Adds new futures to be combined. New futures may be added until an aggregate promise is added via the
| |
| checkAddAllowed | back to summary |
|---|---|
| private void checkAddAllowed() | |
| checkInEventLoop | back to summary |
|---|---|
| private void checkInEventLoop() | |
| finish | back to summary |
|---|---|
| public void finish(Promise<Void> aggregatePromise) Sets the promise to be notified when all combined futures have finished. If all combined futures succeed, then the aggregate promise will succeed. If one or more combined futures fails, then the aggregate promise will fail with the cause of one of the failed futures. If more than one combined future fails, then exactly which failure will be assigned to the aggregate promise is undefined. After this method is called, no more futures may be added via the | |
| tryPromise | back to summary |
|---|---|
| private boolean tryPromise() | |