Package org.apache.hc.client5.http
Class RouteTracker
- java.lang.Object
-
- org.apache.hc.client5.http.RouteTracker
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.hc.client5.http.RouteInfo
RouteInfo.LayerType, RouteInfo.TunnelType
-
-
Field Summary
Fields Modifier and Type Field Description private booleanconnectedWhether the first hop of the route is established.private RouteInfo.LayerTypelayeredWhether the route is layered over a tunnel.private java.net.InetAddresslocalAddressThe local address to connect from.private org.apache.hc.core5.http.HttpHost[]proxyChainThe proxy chain, if any.private booleansecureWhether the route is secure.private org.apache.hc.core5.http.HttpHosttargetHostThe target host to connect to.private RouteInfo.TunnelTypetunnelledWhether the the route is tunnelled end-to-end through proxies.
-
Constructor Summary
Constructors Constructor Description RouteTracker(HttpRoute route)Creates a new tracker for the given route.RouteTracker(org.apache.hc.core5.http.HttpHost target, java.net.InetAddress local)Creates a new route tracker.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Objectclone()voidconnectProxy(org.apache.hc.core5.http.HttpHost proxy, boolean secure)Tracks connecting to the first proxy.voidconnectTarget(boolean secure)Tracks connecting to the target.booleanequals(java.lang.Object o)Compares this tracked route to another.intgetHopCount()Obtains the number of hops in this route.org.apache.hc.core5.http.HttpHostgetHopTarget(int hop)Obtains the target of a hop in this route.RouteInfo.LayerTypegetLayerType()Obtains the layering type of this route.java.net.InetAddressgetLocalAddress()Obtains the local address to connect from.org.apache.hc.core5.http.HttpHostgetProxyHost()Obtains the first proxy host.org.apache.hc.core5.http.HttpHostgetTargetHost()Obtains the target host.RouteInfo.TunnelTypegetTunnelType()Obtains the tunnel type of this route.inthashCode()Generates a hash code for this tracked route.booleanisConnected()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.voidlayerProtocol(boolean secure)Tracks layering a protocol.voidreset()HttpRoutetoRoute()Obtains the tracked route.java.lang.StringtoString()Obtains a description of the tracked route.voidtunnelProxy(org.apache.hc.core5.http.HttpHost proxy, boolean secure)Tracks tunnelling to a proxy in a proxy chain.voidtunnelTarget(boolean secure)Tracks tunnelling to the target.
-
-
-
Field Detail
-
targetHost
private final org.apache.hc.core5.http.HttpHost targetHost
The target host to connect to.
-
localAddress
private final java.net.InetAddress localAddress
The local address to connect from.nullindicates that the default should be used.
-
connected
private boolean connected
Whether the first hop of the route is established.
-
proxyChain
private org.apache.hc.core5.http.HttpHost[] proxyChain
The proxy chain, if any.
-
tunnelled
private RouteInfo.TunnelType tunnelled
Whether the the route is tunnelled end-to-end through proxies.
-
layered
private RouteInfo.LayerType layered
Whether the route is layered over a tunnel.
-
secure
private boolean secure
Whether the route is secure.
-
-
Constructor Detail
-
RouteTracker
public RouteTracker(org.apache.hc.core5.http.HttpHost target, java.net.InetAddress local)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, ornullfor the default
-
RouteTracker
public RouteTracker(HttpRoute route)
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 Detail
-
reset
public void reset()
- Since:
- 4.2
-
connectTarget
public void connectTarget(boolean secure)
Tracks connecting to the target.- Parameters:
secure-trueif the route is secure,falseotherwise
-
connectProxy
public void connectProxy(org.apache.hc.core5.http.HttpHost proxy, boolean secure)Tracks connecting to the first proxy.- Parameters:
proxy- the proxy connected tosecure-trueif the route is secure,falseotherwise
-
tunnelTarget
public void tunnelTarget(boolean secure)
Tracks tunnelling to the target.- Parameters:
secure-trueif the route is secure,falseotherwise
-
tunnelProxy
public void tunnelProxy(org.apache.hc.core5.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-trueif the route is secure,falseotherwise
-
layerProtocol
public void layerProtocol(boolean secure)
Tracks layering a protocol.- Parameters:
secure-trueif the route is secure,falseotherwise
-
getTargetHost
public org.apache.hc.core5.http.HttpHost getTargetHost()
Description copied from interface:RouteInfoObtains the target host.- Specified by:
getTargetHostin interfaceRouteInfo- Returns:
- the target host
-
getLocalAddress
public java.net.InetAddress getLocalAddress()
Description copied from interface:RouteInfoObtains the local address to connect from.- Specified by:
getLocalAddressin interfaceRouteInfo- Returns:
- the local address,
or
null
-
getHopCount
public 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
public org.apache.hc.core5.http.HttpHost getHopTarget(int hop)
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
public org.apache.hc.core5.http.HttpHost 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
-
isConnected
public boolean isConnected()
-
getTunnelType
public RouteInfo.TunnelType 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 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
public RouteInfo.LayerType 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 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 boolean isSecure()
Description copied from interface:RouteInfoChecks whether this route is secure.
-
toRoute
public HttpRoute 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
nullif nothing has been tracked so far
-
equals
public boolean equals(java.lang.Object o)
Compares this tracked route to another.- Overrides:
equalsin classjava.lang.Object- Parameters:
o- the object to compare with- Returns:
trueif the argument is the same tracked route,false
-
hashCode
public int hashCode()
Generates a hash code for this tracked route. Route trackers are modifiable and should therefore not be used as lookup keys. UsetoRouteto obtain an unmodifiable representation of the tracked route.- Overrides:
hashCodein classjava.lang.Object- Returns:
- the hash code
-
toString
public java.lang.String toString()
Obtains a description of the tracked route.- Overrides:
toStringin classjava.lang.Object- Returns:
- a human-readable representation of the tracked route
-
clone
public java.lang.Object clone() throws java.lang.CloneNotSupportedException- Overrides:
clonein classjava.lang.Object- Throws:
java.lang.CloneNotSupportedException
-
-