CompositeNameResolver Class — netty Architecture
Architecture documentation for the CompositeNameResolver class in CompositeNameResolver.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 75d4943c_966e_29f6_2ec2_09e480037a9d["CompositeNameResolver"] dffefd64_a1e4_0bdf_013a_9042346f2d12["CompositeNameResolver.java"] 75d4943c_966e_29f6_2ec2_09e480037a9d -->|defined in| dffefd64_a1e4_0bdf_013a_9042346f2d12 30b23230_3a1e_2151_2550_219764069386["CompositeNameResolver()"] 75d4943c_966e_29f6_2ec2_09e480037a9d -->|method| 30b23230_3a1e_2151_2550_219764069386 c1374aab_0057_2cf7_3993_3223f89799ce["doResolve()"] 75d4943c_966e_29f6_2ec2_09e480037a9d -->|method| c1374aab_0057_2cf7_3993_3223f89799ce 578e4655_3360_dcb2_6170_d9ae581db28b["doResolveRec()"] 75d4943c_966e_29f6_2ec2_09e480037a9d -->|method| 578e4655_3360_dcb2_6170_d9ae581db28b 17598bdd_0804_f702_741b_12c60b0fc8de["doResolveAll()"] 75d4943c_966e_29f6_2ec2_09e480037a9d -->|method| 17598bdd_0804_f702_741b_12c60b0fc8de 74b968c4_c9a6_a534_9864_0a52599b8f23["doResolveAllRec()"] 75d4943c_966e_29f6_2ec2_09e480037a9d -->|method| 74b968c4_c9a6_a534_9864_0a52599b8f23
Relationship Graph
Source Code
resolver/src/main/java/io/netty/resolver/CompositeNameResolver.java lines 34–101
public final class CompositeNameResolver<T> extends SimpleNameResolver<T> {
private final NameResolver<T>[] resolvers;
/**
* @param executor the {@link EventExecutor} which is used to notify the listeners of the {@link Future} returned
* by {@link #resolve(String)}
* @param resolvers the {@link NameResolver}s to be tried sequentially
*/
public CompositeNameResolver(EventExecutor executor, NameResolver<T>... resolvers) {
super(executor);
checkNotNull(resolvers, "resolvers");
for (int i = 0; i < resolvers.length; i++) {
ObjectUtil.checkNotNull(resolvers[i], "resolvers[" + i + ']');
}
if (resolvers.length < 2) {
throw new IllegalArgumentException("resolvers: " + Arrays.asList(resolvers) +
" (expected: at least 2 resolvers)");
}
this.resolvers = resolvers.clone();
}
@Override
protected void doResolve(String inetHost, Promise<T> promise) throws Exception {
doResolveRec(inetHost, promise, 0, null);
}
private void doResolveRec(final String inetHost,
final Promise<T> promise,
final int resolverIndex,
Throwable lastFailure) throws Exception {
if (resolverIndex >= resolvers.length) {
promise.setFailure(lastFailure);
} else {
NameResolver<T> resolver = resolvers[resolverIndex];
resolver.resolve(inetHost).addListener((FutureListener<T>) future -> {
if (future.isSuccess()) {
promise.setSuccess(future.getNow());
} else {
doResolveRec(inetHost, promise, resolverIndex + 1, future.cause());
}
});
}
}
@Override
protected void doResolveAll(String inetHost, Promise<List<T>> promise) throws Exception {
doResolveAllRec(inetHost, promise, 0, null);
}
private void doResolveAllRec(final String inetHost,
final Promise<List<T>> promise,
final int resolverIndex,
Throwable lastFailure) throws Exception {
if (resolverIndex >= resolvers.length) {
promise.setFailure(lastFailure);
} else {
NameResolver<T> resolver = resolvers[resolverIndex];
resolver.resolveAll(inetHost).addListener((FutureListener<List<T>>) future -> {
if (future.isSuccess()) {
promise.setSuccess(future.getNow());
} else {
doResolveAllRec(inetHost, promise, resolverIndex + 1, future.cause());
}
});
}
}
}
Source
Frequently Asked Questions
What is the CompositeNameResolver class?
CompositeNameResolver is a class in the netty codebase, defined in resolver/src/main/java/io/netty/resolver/CompositeNameResolver.java.
Where is CompositeNameResolver defined?
CompositeNameResolver is defined in resolver/src/main/java/io/netty/resolver/CompositeNameResolver.java at line 34.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free