AbstractAddressResolver Class — netty Architecture
Architecture documentation for the AbstractAddressResolver class in AbstractAddressResolver.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD d51df911_40c0_7d7d_23f8_9ff1d25bdb9b["AbstractAddressResolver"] 241bddea_8104_1c11_e666_4f41ffe13e8d["AbstractAddressResolver.java"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|defined in| 241bddea_8104_1c11_e666_4f41ffe13e8d b690743d_d5aa_efa4_05ec_a319d96eb94d["AbstractAddressResolver()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| b690743d_d5aa_efa4_05ec_a319d96eb94d dd08fc1a_80f9_1450_b74c_e5da4477f9d7["EventExecutor()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| dd08fc1a_80f9_1450_b74c_e5da4477f9d7 37f87a2c_989c_7415_117f_6bd1ca057fb2["isSupported()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| 37f87a2c_989c_7415_117f_6bd1ca057fb2 1270b219_3858_1972_75b7_1c58402bf2a6["isResolved()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| 1270b219_3858_1972_75b7_1c58402bf2a6 1657e6f4_7d78_9a40_5c0e_6cc61632e23b["doIsResolved()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| 1657e6f4_7d78_9a40_5c0e_6cc61632e23b bce0916f_99a5_0ad6_a45a_307cf5835a4e["resolve()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| bce0916f_99a5_0ad6_a45a_307cf5835a4e 02cf9d63_d07d_fdb8_7a04_d19c4d3556ea["resolveAll()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| 02cf9d63_d07d_fdb8_7a04_d19c4d3556ea 9d2f69a9_7104_77ff_bd0a_be1bb07d69cc["doResolve()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| 9d2f69a9_7104_77ff_bd0a_be1bb07d69cc 299b365d_d512_5362_d3df_7af9ac36aab0["doResolveAll()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| 299b365d_d512_5362_d3df_7af9ac36aab0 18ba1151_f69a_cc98_a0c4_3cca6876ca50["close()"] d51df911_40c0_7d7d_23f8_9ff1d25bdb9b -->|method| 18ba1151_f69a_cc98_a0c4_3cca6876ca50
Relationship Graph
Source Code
resolver/src/main/java/io/netty/resolver/AbstractAddressResolver.java lines 34–206
public abstract class AbstractAddressResolver<T extends SocketAddress> implements AddressResolver<T> {
private final EventExecutor executor;
private final TypeParameterMatcher matcher;
/**
* @param executor the {@link EventExecutor} which is used to notify the listeners of the {@link Future} returned
* by {@link #resolve(SocketAddress)}
*/
protected AbstractAddressResolver(EventExecutor executor) {
this.executor = checkNotNull(executor, "executor");
this.matcher = TypeParameterMatcher.find(this, AbstractAddressResolver.class, "T");
}
/**
* @param executor the {@link EventExecutor} which is used to notify the listeners of the {@link Future} returned
* by {@link #resolve(SocketAddress)}
* @param addressType the type of the {@link SocketAddress} supported by this resolver
*/
protected AbstractAddressResolver(EventExecutor executor, Class<? extends T> addressType) {
this.executor = checkNotNull(executor, "executor");
this.matcher = TypeParameterMatcher.get(addressType);
}
/**
* Returns the {@link EventExecutor} which is used to notify the listeners of the {@link Future} returned
* by {@link #resolve(SocketAddress)}.
*/
protected EventExecutor executor() {
return executor;
}
@Override
public boolean isSupported(SocketAddress address) {
return matcher.match(address);
}
@Override
public final boolean isResolved(SocketAddress address) {
if (!isSupported(address)) {
throw new UnsupportedAddressTypeException();
}
@SuppressWarnings("unchecked")
final T castAddress = (T) address;
return doIsResolved(castAddress);
}
/**
* Invoked by {@link #isResolved(SocketAddress)} to check if the specified {@code address} has been resolved
* already.
*/
protected abstract boolean doIsResolved(T address);
@Override
public final Future<T> resolve(SocketAddress address) {
if (!isSupported(checkNotNull(address, "address"))) {
// Address type not supported by the resolver
return executor().newFailedFuture(new UnsupportedAddressTypeException());
}
if (isResolved(address)) {
// Resolved already; no need to perform a lookup
@SuppressWarnings("unchecked")
final T cast = (T) address;
return executor.newSucceededFuture(cast);
}
try {
@SuppressWarnings("unchecked")
final T cast = (T) address;
final Promise<T> promise = executor().newPromise();
doResolve(cast, promise);
return promise;
} catch (Exception e) {
return executor().newFailedFuture(e);
}
}
@Override
public final Future<T> resolve(SocketAddress address, Promise<T> promise) {
Source
Frequently Asked Questions
What is the AbstractAddressResolver class?
AbstractAddressResolver is a class in the netty codebase, defined in resolver/src/main/java/io/netty/resolver/AbstractAddressResolver.java.
Where is AbstractAddressResolver defined?
AbstractAddressResolver is defined in resolver/src/main/java/io/netty/resolver/AbstractAddressResolver.java at line 34.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free