Home / Class/ AbstractAddressResolver Class — netty Architecture

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) {

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