DefaultChannelGroupFuture Class — netty Architecture
Architecture documentation for the DefaultChannelGroupFuture class in DefaultChannelGroupFuture.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 1a024fce_f7a6_4bf6_3215_f4b94d0025ce["DefaultChannelGroupFuture"] bf44c06f_5cc7_7329_6100_98a5c6929372["DefaultChannelGroupFuture.java"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|defined in| bf44c06f_5cc7_7329_6100_98a5c6929372 84eab3e5_2b16_2640_2ea8_a7f12f058875["DefaultChannelGroupFuture()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| 84eab3e5_2b16_2640_2ea8_a7f12f058875 350e40f0_3ced_041e_ff32_01583ec1667e["ChannelGroup()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| 350e40f0_3ced_041e_ff32_01583ec1667e 5ba30bf7_6904_1b33_982e_7f6519c9cde9["ChannelFuture()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| 5ba30bf7_6904_1b33_982e_7f6519c9cde9 f859be4f_85be_bb20_6591_a9c69151bc75["iterator()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| f859be4f_85be_bb20_6591_a9c69151bc75 c4f9f310_db24_54bc_89e9_077730bb87f6["isPartialSuccess()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| c4f9f310_db24_54bc_89e9_077730bb87f6 dacd662b_5515_a47f_68da_6b294404b2c0["isPartialFailure()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| dacd662b_5515_a47f_68da_6b294404b2c0 dcb50b8b_093a_5920_ad6f_21c8bf91dc14["ChannelGroupException()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| dcb50b8b_093a_5920_ad6f_21c8bf91dc14 2dd45fe8_bfd0_a814_cc75_3701ecf322cd["setSuccess0()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| 2dd45fe8_bfd0_a814_cc75_3701ecf322cd 6b438797_5ce5_12c0_65eb_ecf5420f8bf8["setFailure0()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| 6b438797_5ce5_12c0_65eb_ecf5420f8bf8 d1a77b15_dffa_bb9d_cb57_48c3cf017160["trySuccess()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| d1a77b15_dffa_bb9d_cb57_48c3cf017160 91597e51_64da_c60d_0cf8_f14a25a804f8["tryFailure()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| 91597e51_64da_c60d_0cf8_f14a25a804f8 a77c2eec_f619_e9b0_32a5_109738e0110a["checkDeadLock()"] 1a024fce_f7a6_4bf6_3215_f4b94d0025ce -->|method| a77c2eec_f619_e9b0_32a5_109738e0110a
Relationship Graph
Source Code
transport/src/main/java/io/netty/channel/group/DefaultChannelGroupFuture.java lines 41–259
final class DefaultChannelGroupFuture extends DefaultPromise<Void> implements ChannelGroupFuture {
private final ChannelGroup group;
private final Map<Channel, ChannelFuture> futures;
private int successCount;
private int failureCount;
private final ChannelFutureListener childListener = new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) throws Exception {
boolean success = future.isSuccess();
boolean callSetDone;
synchronized (DefaultChannelGroupFuture.this) {
if (success) {
successCount ++;
} else {
failureCount ++;
}
callSetDone = successCount + failureCount == futures.size();
assert successCount + failureCount <= futures.size();
}
if (callSetDone) {
if (failureCount > 0) {
List<Map.Entry<Channel, Throwable>> failed =
new ArrayList<Map.Entry<Channel, Throwable>>(failureCount);
for (ChannelFuture f: futures.values()) {
if (!f.isSuccess()) {
failed.add(new DefaultEntry<Channel, Throwable>(f.channel(), f.cause()));
}
}
setFailure0(new ChannelGroupException(failed));
} else {
setSuccess0();
}
}
}
};
/**
* Creates a new instance.
*/
DefaultChannelGroupFuture(ChannelGroup group, Collection<ChannelFuture> futures, EventExecutor executor) {
super(executor);
this.group = ObjectUtil.checkNotNull(group, "group");
ObjectUtil.checkNotNull(futures, "futures");
Map<Channel, ChannelFuture> futureMap = new LinkedHashMap<Channel, ChannelFuture>();
for (ChannelFuture f: futures) {
futureMap.put(f.channel(), f);
}
this.futures = Collections.unmodifiableMap(futureMap);
for (ChannelFuture f: this.futures.values()) {
f.addListener(childListener);
}
// Done on arrival?
if (this.futures.isEmpty()) {
setSuccess0();
}
}
DefaultChannelGroupFuture(ChannelGroup group, Map<Channel, ChannelFuture> futures, EventExecutor executor) {
super(executor);
this.group = group;
this.futures = Collections.unmodifiableMap(futures);
for (ChannelFuture f: this.futures.values()) {
f.addListener(childListener);
}
// Done on arrival?
if (this.futures.isEmpty()) {
setSuccess0();
}
}
@Override
public ChannelGroup group() {
Source
Frequently Asked Questions
What is the DefaultChannelGroupFuture class?
DefaultChannelGroupFuture is a class in the netty codebase, defined in transport/src/main/java/io/netty/channel/group/DefaultChannelGroupFuture.java.
Where is DefaultChannelGroupFuture defined?
DefaultChannelGroupFuture is defined in transport/src/main/java/io/netty/channel/group/DefaultChannelGroupFuture.java at line 41.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free