Package org.apache.http.conn.routing
Class RouteTracker
java.lang.Object
org.apache.http.conn.routing.RouteTracker
Helps tracking the steps in establishing a route.
- Since:
- 4.0
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.http.conn.routing.RouteInfo
RouteInfo.LayerType, RouteInfo.TunnelType
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Whether the first hop of the route is established.private RouteInfo.LayerType
Whether the route is layered over a tunnel.private final InetAddress
The local address to connect from.private org.apache.http.HttpHost[]
The proxy chain, if any.private boolean
Whether the route is secure.private final org.apache.http.HttpHost
The target host to connect to.private RouteInfo.TunnelType
Whether the the route is tunnelled end-to-end through proxies. -
Constructor Summary
ConstructorsConstructorDescriptionRouteTracker
(HttpRoute route) Creates a new tracker for the given route.RouteTracker
(org.apache.http.HttpHost target, InetAddress local) Creates a new route tracker. -
Method Summary
Modifier and TypeMethodDescriptionclone()
final void
connectProxy
(org.apache.http.HttpHost proxy, boolean secure) Tracks connecting to the first proxy.final void
connectTarget
(boolean secure) Tracks connecting to the target.final boolean
Compares this tracked route to another.final int
Obtains the number of hops in this route.final org.apache.http.HttpHost
getHopTarget
(int hop) Obtains the target of a hop in this route.final RouteInfo.LayerType
Obtains the layering type of this route.final InetAddress
Obtains the local address to connect from.final org.apache.http.HttpHost
Obtains the first proxy host.final org.apache.http.HttpHost
Obtains the target host.final RouteInfo.TunnelType
Obtains the tunnel type of this route.final int
hashCode()
Generates a hash code for this tracked route.final boolean
final boolean
Checks whether this route includes a layered protocol.final boolean
isSecure()
Checks whether this route is secure.final boolean
Checks whether this route is tunnelled through a proxy.final void
layerProtocol
(boolean secure) Tracks layering a protocol.void
reset()
final HttpRoute
toRoute()
Obtains the tracked route.final String
toString()
Obtains a description of the tracked route.final void
tunnelProxy
(org.apache.http.HttpHost proxy, boolean secure) Tracks tunnelling to a proxy in a proxy chain.final void
tunnelTarget
(boolean secure) Tracks tunnelling to the target.
-
Field Details
-
targetHost
private final org.apache.http.HttpHost targetHostThe target host to connect to. -
localAddress
The local address to connect from.null
indicates that the default should be used. -
connected
private boolean connectedWhether the first hop of the route is established. -
proxyChain
private org.apache.http.HttpHost[] proxyChainThe proxy chain, if any. -
tunnelled
Whether the the route is tunnelled end-to-end through proxies. -
layered
Whether the route is layered over a tunnel. -
secure
private boolean secureWhether the route is secure.
-
-
Constructor Details
-
RouteTracker
Creates a new route tracker. The target and origin need to be specified at creation time.- Parameters:
target
- the host to which to routelocal
- the local address to route from, ornull
for the default
-
RouteTracker
Creates a new tracker for the given route. Only target and origin are taken from the route, everything else remains to be tracked.- Parameters:
route
- the route to track
-
-
Method Details
-
reset
public void reset()- Since:
- 4.2
-
connectTarget
public final void connectTarget(boolean secure) Tracks connecting to the target.- Parameters:
secure
-true
if the route is secure,false
otherwise
-
connectProxy
public final void connectProxy(org.apache.http.HttpHost proxy, boolean secure) Tracks connecting to the first proxy.- Parameters:
proxy
- the proxy connected tosecure
-true
if the route is secure,false
otherwise
-
tunnelTarget
public final void tunnelTarget(boolean secure) Tracks tunnelling to the target.- Parameters:
secure
-true
if the route is secure,false
otherwise
-
tunnelProxy
public final void tunnelProxy(org.apache.http.HttpHost proxy, boolean secure) Tracks tunnelling to a proxy in a proxy chain. This will extend the tracked proxy chain, but it does not mark the route as tunnelled. Only end-to-end tunnels are considered there.- Parameters:
proxy
- the proxy tunnelled tosecure
-true
if the route is secure,false
otherwise
-
layerProtocol
public final void layerProtocol(boolean secure) Tracks layering a protocol.- Parameters:
secure
-true
if the route is secure,false
otherwise
-
getTargetHost
public final org.apache.http.HttpHost getTargetHost()Description copied from interface:RouteInfo
Obtains the target host.- Specified by:
getTargetHost
in interfaceRouteInfo
- Returns:
- the target host
-
getLocalAddress
Description copied from interface:RouteInfo
Obtains the local address to connect from.- Specified by:
getLocalAddress
in interfaceRouteInfo
- 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 interfaceRouteInfo
- Returns:
- the number of hops in this route
-
getHopTarget
public final org.apache.http.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 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:
getHopTarget
in interfaceRouteInfo
- 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 org.apache.http.HttpHost getProxyHost()Description copied from interface:RouteInfo
Obtains the first proxy host.- Specified by:
getProxyHost
in interfaceRouteInfo
- Returns:
- the first proxy in the proxy chain, or
null
if this route is direct
-
isConnected
public final boolean isConnected() -
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 interfaceRouteInfo
- 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 interfaceRouteInfo
- Returns:
true
if tunnelled end-to-end through at least one proxy,false
otherwise
-
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 interfaceRouteInfo
- 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. -
isSecure
public final boolean isSecure()Description copied from interface:RouteInfo
Checks whether this route is secure. -
toRoute
Obtains the tracked route. If a route has been tracked, it isconnected
. If not connected, nothing has been tracked so far.- Returns:
- the tracked route, or
null
if nothing has been tracked so far
-
equals
Compares this tracked route to another. -
hashCode
public final int hashCode()Generates a hash code for this tracked route. Route trackers are modifiable and should therefore not be used as lookup keys. UsetoRoute
to obtain an unmodifiable representation of the tracked route. -
toString
Obtains a description of the tracked route. -
clone
- Overrides:
clone
in classObject
- Throws:
CloneNotSupportedException
-