All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.lightbody.bmp.proxy.dns.AdvancedHostResolver Maven / Gradle / Ivy

There is a newer version: 2.1.5
Show newest version
package net.lightbody.bmp.proxy.dns;

import java.util.Collection;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * This interface defines the "core" DNS-manipulation functionality that BrowserMob Proxy supports, in addition to the basic name resolution
 * capability defined in {@link net.lightbody.bmp.proxy.dns.HostResolver}. AdvancedHostResolvers should apply any remappings before attempting
 * to resolve the hostname in the {@link HostResolver#resolve(String)} method.
 */
public interface AdvancedHostResolver extends HostResolver {
    /**
     * Replaces the host remappings in the existing list of remappings (if any) with the specified remappings. The remappings will be
     * applied in the order specified by the Map's iterator.
     * 

* Note: The original hostnames must exactly match the requested hostname. It is not a domain or regular expression match. * * @param hostRemappings Map of {@code } */ void remapHosts(Map hostRemappings); /** * Remaps an individual host. If there are any existing remappings, the new remapping will be applied last, after all existing * remappings are applied. If there is already a remapping for the specified originalHost, it will be removed before * the new remapping is added to the end of the host remapping list (and will therefore be the last remapping applied). * * @param originalHost Original host to remap. Must exactly match the requested hostname (not a domain or regular expression match). * @param remappedHost hostname that will replace originalHost */ void remapHost(String originalHost, String remappedHost); /** * Removes the specified host remapping. If the remapping does not exist, this method has no effect. * * @param originalHost currently-remapped hostname */ void removeHostRemapping(String originalHost); /** * Removes all hostname remappings. */ void clearHostRemappings(); /** * Returns all host remappings in effect. Iterating over the returned Map is guaranteed to return remappings in the order in which the * remappings are actually applied. * * @return Map of {@code } */ Map getHostRemappings(); /** * Returns the original address or addresses that are remapped to the specified remappedHost. Iterating over the returned Collection is * guaranteed to return original mappings in the order in which the remappings are applied. * * @param remappedHost remapped hostname * @return original hostnames that are remapped to the specified remappedHost, or an empty Collection if no remapping is defined to the remappedHost */ Collection getOriginalHostnames(String remappedHost); /** * Clears both the positive (successful DNS lookups) and negative (failed DNS lookups) cache. */ void clearDNSCache(); /** * Sets the positive (successful DNS lookup) timeout when making DNS lookups. *

* Note: The timeUnit parameter does not guarantee the specified precision; implementations may need to reduce precision, depending on the underlying * DNS implementation. For example, the Oracle JVM's DNS cache only supports timeouts in whole seconds, so specifying a timeout of 1200ms will result * in a timeout of 1 second. * * @param timeout maximum lookup time * @param timeUnit units of the timeout value */ void setPositiveDNSCacheTimeout(int timeout, TimeUnit timeUnit); /** * Sets the negative (failed DNS lookup) timeout when making DNS lookups. *

* Note: The timeUnit parameter does not guarantee the specified precision; implementations may need to reduce precision, depending on the underlying * DNS implementation. For example, the Oracle JVM's DNS cache only supports timeouts in whole seconds, so specifying a timeout of 1200ms will result * in a timeout of 1 second. * * @param timeout maximum lookup time * @param timeUnit units of the timeout value */ void setNegativeDNSCacheTimeout(int timeout, TimeUnit timeUnit); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy