Class HttpRoute

java.lang.Object
org.apache.http.conn.routing.HttpRoute
All Implemented Interfaces:
Cloneable, RouteInfo

public final class HttpRoute
extends Object
implements RouteInfo, Cloneable
The route for a request. Instances of this class are unmodifiable and therefore suitable for use as lookup keys.
Since:
4.0
Version:
$Revision: 653041 $
Author:
Roland Weber
  • Constructor Details

    • HttpRoute

      public HttpRoute​(HttpHost target, InetAddress local, HttpHost[] proxies, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)
      Creates a new route with all attributes specified explicitly.
      Parameters:
      target - the host to which to route
      local - the local address to route from, or null for the default
      proxies - the proxy chain to use, or null for a direct route
      secure - true if the route is (to be) secure, false otherwise
      tunnelled - the tunnel type of this route
      layered - the layering type of this route
    • HttpRoute

      public HttpRoute​(HttpHost target, InetAddress local, HttpHost proxy, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)
      Creates a new route with at most one proxy.
      Parameters:
      target - the host to which to route
      local - the local address to route from, or null for the default
      proxy - the proxy to use, or null for a direct route
      secure - true if the route is (to be) secure, false otherwise
      tunnelled - true if the route is (to be) tunnelled via the proxy, false otherwise
      layered - true if the route includes a layered protocol, false otherwise
    • HttpRoute

      public HttpRoute​(HttpHost target, InetAddress local, boolean secure)
      Creates a new direct route. That is a route without a proxy.
      Parameters:
      target - the host to which to route
      local - the local address to route from, or null for the default
      secure - true if the route is (to be) secure, false otherwise
    • HttpRoute

      public HttpRoute​(HttpHost target)
      Creates a new direct insecure route.
      Parameters:
      target - the host to which to route
    • HttpRoute

      public HttpRoute​(HttpHost target, InetAddress local, HttpHost proxy, boolean secure)
      Creates a new route through a proxy. When using this constructor, the proxy MUST be given. For convenience, it is assumed that a secure connection will be layered over a tunnel through the proxy.
      Parameters:
      target - the host to which to route
      local - the local address to route from, or null for the default
      proxy - the proxy to use
      secure - true if the route is (to be) secure, false otherwise
  • Method Details

    • getTargetHost

      public final HttpHost getTargetHost()
      Description copied from interface: RouteInfo
      Obtains the target host.
      Specified by:
      getTargetHost in interface RouteInfo
      Returns:
      the target host
    • getLocalAddress

      public final InetAddress getLocalAddress()
      Description copied from interface: RouteInfo
      Obtains the local address to connect from.
      Specified by:
      getLocalAddress in interface RouteInfo
      Returns:
      the local address, or null
    • getHopCount

      public final int getHopCount()
      Description copied from interface: RouteInfo
      Obtains the number of hops in this route. A direct route has one hop. A route through a proxy has two hops. A route through a chain of n proxies has n+1 hops.
      Specified by:
      getHopCount in interface RouteInfo
      Returns:
      the number of hops in this route
    • getHopTarget

      public final HttpHost getHopTarget​(int hop)
      Description copied from interface: RouteInfo
      Obtains the target of a hop in this route. The target of the last hop is the target host, the target of previous hops is the respective proxy in the chain. For a route through exactly one proxy, target of hop 0 is the proxy and target of hop 1 is the target host.
      Specified by:
      getHopTarget in interface RouteInfo
      Parameters:
      hop - index of the hop for which to get the target, 0 for first
      Returns:
      the target of the given hop
    • getProxyHost

      public final HttpHost getProxyHost()
      Description copied from interface: RouteInfo
      Obtains the first proxy host.
      Specified by:
      getProxyHost in interface RouteInfo
      Returns:
      the first proxy in the proxy chain, or null if this route is direct
    • getTunnelType

      public final RouteInfo.TunnelType getTunnelType()
      Description copied from interface: RouteInfo
      Obtains the tunnel type of this route. If there is a proxy chain, only end-to-end tunnels are considered.
      Specified by:
      getTunnelType in interface RouteInfo
      Returns:
      the tunnelling type
    • isTunnelled

      public final boolean isTunnelled()
      Description copied from interface: RouteInfo
      Checks whether this route is tunnelled through a proxy. If there is a proxy chain, only end-to-end tunnels are considered.
      Specified by:
      isTunnelled in interface RouteInfo
      Returns:
      true if tunnelled end-to-end through at least one proxy, false otherwise
    • getLayerType

      public final RouteInfo.LayerType getLayerType()
      Description copied from interface: RouteInfo
      Obtains the layering type of this route. In the presence of proxies, only layering over an end-to-end tunnel is considered.
      Specified by:
      getLayerType in interface RouteInfo
      Returns:
      the layering type
    • isLayered

      public final boolean isLayered()
      Description copied from interface: RouteInfo
      Checks whether this route includes a layered protocol. In the presence of proxies, only layering over an end-to-end tunnel is considered.
      Specified by:
      isLayered in interface RouteInfo
      Returns:
      true if layered, false otherwise
    • isSecure

      public final boolean isSecure()
      Description copied from interface: RouteInfo
      Checks whether this route is secure.
      Specified by:
      isSecure in interface RouteInfo
      Returns:
      true if secure, false otherwise
    • equals

      public final boolean equals​(Object o)
      Compares this route to another.
      Overrides:
      equals in class Object
      Parameters:
      o - the object to compare with
      Returns:
      true if the argument is the same route, false
      See Also:
      Object.hashCode()
    • hashCode

      public final int hashCode()
      Generates a hash code for this route.
      Overrides:
      hashCode in class Object
      Returns:
      the hash code
      See Also:
      Object.equals(java.lang.Object)
    • toString

      public final String toString()
      Obtains a description of this route.
      Overrides:
      toString in class Object
      Returns:
      a human-readable representation of this route
    • clone

      public Object clone() throws CloneNotSupportedException
      Description copied from class: Object
      Creates and returns a copy of this Object. The default implementation returns a so-called "shallow" copy: It creates a new instance of the same class and then copies the field values (including object references) from this instance to the new instance. A "deep" copy, in contrast, would also recursively clone nested objects. A subclass that needs to implement this kind of cloning should call super.clone() to create the new instance and then create deep copies of the nested, mutable objects.
      Overrides:
      clone in class Object
      Returns:
      a copy of this object.
      Throws:
      CloneNotSupportedException - if this object's class does not implement the Cloneable interface.