Package org.apache.http.conn.routing
Class HttpRoute
java.lang.Object
org.apache.http.conn.routing.HttpRoute
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
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.http.conn.routing.RouteInfo
RouteInfo.LayerType, RouteInfo.TunnelType -
Constructor Summary
Constructors Constructor Description HttpRoute(HttpHost target)Creates a new direct insecure route.HttpRoute(HttpHost target, InetAddress local, boolean secure)Creates a new direct route.HttpRoute(HttpHost target, InetAddress local, HttpHost[] proxies, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)Creates a new route with all attributes specified explicitly.HttpRoute(HttpHost target, InetAddress local, HttpHost proxy, boolean secure)Creates a new route through a proxy.HttpRoute(HttpHost target, InetAddress local, HttpHost proxy, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)Creates a new route with at most one proxy. -
Method Summary
Modifier and Type Method Description Objectclone()Creates and returns a copy of thisObject.booleanequals(Object o)Compares this route to another.intgetHopCount()Obtains the number of hops in this route.HttpHostgetHopTarget(int hop)Obtains the target of a hop in this route.RouteInfo.LayerTypegetLayerType()Obtains the layering type of this route.InetAddressgetLocalAddress()Obtains the local address to connect from.HttpHostgetProxyHost()Obtains the first proxy host.HttpHostgetTargetHost()Obtains the target host.RouteInfo.TunnelTypegetTunnelType()Obtains the tunnel type of this route.inthashCode()Generates a hash code for this route.booleanisLayered()Checks whether this route includes a layered protocol.booleanisSecure()Checks whether this route is secure.booleanisTunnelled()Checks whether this route is tunnelled through a proxy.StringtoString()Obtains a description of this route.
-
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 routelocal- the local address to route from, ornullfor the defaultproxies- the proxy chain to use, ornullfor a direct routesecure-trueif the route is (to be) secure,falseotherwisetunnelled- the tunnel type of this routelayered- 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 routelocal- the local address to route from, ornullfor the defaultproxy- the proxy to use, ornullfor a direct routesecure-trueif the route is (to be) secure,falseotherwisetunnelled-trueif the route is (to be) tunnelled via the proxy,falseotherwiselayered-trueif the route includes a layered protocol,falseotherwise
-
HttpRoute
Creates a new direct route. That is a route without a proxy.- Parameters:
target- the host to which to routelocal- the local address to route from, ornullfor the defaultsecure-trueif the route is (to be) secure,falseotherwise
-
HttpRoute
Creates a new direct insecure route.- Parameters:
target- the host to which to route
-
HttpRoute
Creates a new route through a proxy. When using this constructor, theproxyMUST 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 routelocal- the local address to route from, ornullfor the defaultproxy- the proxy to usesecure-trueif the route is (to be) secure,falseotherwise
-
-
Method Details
-
getTargetHost
Description copied from interface:RouteInfoObtains the target host.- Specified by:
getTargetHostin interfaceRouteInfo- Returns:
- the target host
-
getLocalAddress
Description copied from interface:RouteInfoObtains the local address to connect from.- Specified by:
getLocalAddressin interfaceRouteInfo- Returns:
- the local address,
or
null
-
getHopCount
public final int getHopCount()Description copied from interface:RouteInfoObtains 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:
getHopCountin interfaceRouteInfo- Returns:
- the number of hops in this route
-
getHopTarget
Description copied from interface:RouteInfoObtains the target of a hop in this route. The target of the last hop is thetarget 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:
getHopTargetin interfaceRouteInfo- Parameters:
hop- index of the hop for which to get the target, 0 for first- Returns:
- the target of the given hop
-
getProxyHost
Description copied from interface:RouteInfoObtains the first proxy host.- Specified by:
getProxyHostin interfaceRouteInfo- Returns:
- the first proxy in the proxy chain, or
nullif this route is direct
-
getTunnelType
Description copied from interface:RouteInfoObtains the tunnel type of this route. If there is a proxy chain, only end-to-end tunnels are considered.- Specified by:
getTunnelTypein interfaceRouteInfo- Returns:
- the tunnelling type
-
isTunnelled
public final boolean isTunnelled()Description copied from interface:RouteInfoChecks whether this route is tunnelled through a proxy. If there is a proxy chain, only end-to-end tunnels are considered.- Specified by:
isTunnelledin interfaceRouteInfo- Returns:
trueif tunnelled end-to-end through at least one proxy,falseotherwise
-
getLayerType
Description copied from interface:RouteInfoObtains the layering type of this route. In the presence of proxies, only layering over an end-to-end tunnel is considered.- Specified by:
getLayerTypein interfaceRouteInfo- Returns:
- the layering type
-
isLayered
public final boolean isLayered()Description copied from interface:RouteInfoChecks whether this route includes a layered protocol. In the presence of proxies, only layering over an end-to-end tunnel is considered. -
isSecure
public final boolean isSecure()Description copied from interface:RouteInfoChecks whether this route is secure. -
equals
Compares this route to another.- Overrides:
equalsin classObject- Parameters:
o- the object to compare with- Returns:
trueif the argument is the same route,false- See Also:
Object.hashCode()
-
hashCode
public final int hashCode()Generates a hash code for this route.- Overrides:
hashCodein classObject- Returns:
- the hash code
- See Also:
Object.equals(java.lang.Object)
-
toString
Obtains a description of this route. -
clone
Description copied from class:ObjectCreates and returns a copy of thisObject. 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 callsuper.clone()to create the new instance and then create deep copies of the nested, mutable objects.- Overrides:
clonein classObject- Returns:
- a copy of this object.
- Throws:
CloneNotSupportedException- if this object's class does not implement theCloneableinterface.
-