PromiseAggregator Class — netty Architecture
Architecture documentation for the PromiseAggregator class in PromiseAggregator.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 6b255acd_4eb0_e639_6bd9_6e6d0998b4aa["PromiseAggregator"] 9d9acfd4_ffc5_8eb3_db6f_c7b31667336b["PromiseAggregator.java"] 6b255acd_4eb0_e639_6bd9_6e6d0998b4aa -->|defined in| 9d9acfd4_ffc5_8eb3_db6f_c7b31667336b 4d0aee5f_42e9_20ec_cd7e_04d16722b0ed["PromiseAggregator()"] 6b255acd_4eb0_e639_6bd9_6e6d0998b4aa -->|method| 4d0aee5f_42e9_20ec_cd7e_04d16722b0ed 5a56e02e_c075_5b73_12f6_4f7aa203d9cb["add()"] 6b255acd_4eb0_e639_6bd9_6e6d0998b4aa -->|method| 5a56e02e_c075_5b73_12f6_4f7aa203d9cb ae7b5d31_0682_018a_1164_c59d9b70ebe3["operationComplete()"] 6b255acd_4eb0_e639_6bd9_6e6d0998b4aa -->|method| ae7b5d31_0682_018a_1164_c59d9b70ebe3
Relationship Graph
Source Code
common/src/main/java/io/netty/util/concurrent/PromiseAggregator.java lines 34–112
@Deprecated
public class PromiseAggregator<V, F extends Future<V>> implements GenericFutureListener<F> {
private final Promise<?> aggregatePromise;
private final boolean failPending;
private Set<Promise<V>> pendingPromises;
/**
* Creates a new instance.
*
* @param aggregatePromise the {@link Promise} to notify
* @param failPending {@code true} to fail pending promises, false to leave them unaffected
*/
public PromiseAggregator(Promise<Void> aggregatePromise, boolean failPending) {
this.aggregatePromise = ObjectUtil.checkNotNull(aggregatePromise, "aggregatePromise");
this.failPending = failPending;
}
/**
* See {@link PromiseAggregator#PromiseAggregator(Promise, boolean)}.
* Defaults {@code failPending} to true.
*/
public PromiseAggregator(Promise<Void> aggregatePromise) {
this(aggregatePromise, true);
}
/**
* Add the given {@link Promise}s to the aggregator.
*/
@SafeVarargs
public final PromiseAggregator<V, F> add(Promise<V>... promises) {
ObjectUtil.checkNotNull(promises, "promises");
if (promises.length == 0) {
return this;
}
synchronized (this) {
if (pendingPromises == null) {
int size;
if (promises.length > 1) {
size = promises.length;
} else {
size = 2;
}
pendingPromises = new LinkedHashSet<Promise<V>>(size);
}
for (Promise<V> p : promises) {
if (p == null) {
continue;
}
pendingPromises.add(p);
p.addListener(this);
}
}
return this;
}
@Override
public synchronized void operationComplete(F future) throws Exception {
if (pendingPromises == null) {
aggregatePromise.setSuccess(null);
} else {
pendingPromises.remove(future);
if (!future.isSuccess()) {
Throwable cause = future.cause();
aggregatePromise.setFailure(cause);
if (failPending) {
for (Promise<V> pendingFuture : pendingPromises) {
pendingFuture.setFailure(cause);
}
}
} else {
if (pendingPromises.isEmpty()) {
aggregatePromise.setSuccess(null);
}
}
}
}
}
Source
Frequently Asked Questions
What is the PromiseAggregator class?
PromiseAggregator is a class in the netty codebase, defined in common/src/main/java/io/netty/util/concurrent/PromiseAggregator.java.
Where is PromiseAggregator defined?
PromiseAggregator is defined in common/src/main/java/io/netty/util/concurrent/PromiseAggregator.java at line 34.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free