package org.limewire.net.address; import org.limewire.io.Address; import org.limewire.io.AddressConnectingLoggingCategory; /** * Defines the requirements for an entity that can resolve addresses to other addresses. */ public interface AddressResolver { /** * Logging category name for AddressResolver's to use. */ public static final String LOGGING_CATEGORY = AddressConnectingLoggingCategory.CATEGORY; /** * Returns true if it can resolve the given address. This means it should * take its own state and the information provided by the address into * account. This call must be non-blocking. */ boolean canResolve(Address address); /** * Asynchronously resolves the address to possibly several other addresses and * notifies <code>observer</code> of the resolved addresses. * * @return the observer to allow for fluent access */ <T extends AddressResolutionObserver> T resolve(Address address, T observer); }