List of usage examples for org.apache.http.conn.routing RouteTracker RouteTracker
public RouteTracker(final HttpRoute route)
From source file:org.apache.http.impl.conn.HttpPoolEntry.java
public HttpPoolEntry(final Log log, final String id, final HttpRoute route, final OperatedClientConnection conn, final long timeToLive, final TimeUnit tunit) { super(id, route, conn, timeToLive, tunit); this.log = log; this.tracker = new RouteTracker(route); }
From source file:org.apache.http.impl.execchain.MainClientExec.java
/** * Establishes the target route.//from w ww .j av a2 s . c o m */ void establishRoute(final AuthState proxyAuthState, final HttpClientConnection managedConn, final HttpRoute route, final HttpRequest request, final HttpClientContext context) throws HttpException, IOException { final RequestConfig config = context.getRequestConfig(); final int timeout = config.getConnectTimeout(); final RouteTracker tracker = new RouteTracker(route); int step; do { final HttpRoute fact = tracker.toRoute(); step = this.routeDirector.nextStep(route, fact); switch (step) { case HttpRouteDirector.CONNECT_TARGET: this.connManager.connect(managedConn, route, timeout > 0 ? timeout : 0, context); tracker.connectTarget(route.isSecure()); break; case HttpRouteDirector.CONNECT_PROXY: this.connManager.connect(managedConn, route, timeout > 0 ? timeout : 0, context); final HttpHost proxy = route.getProxyHost(); tracker.connectProxy(proxy, false); break; case HttpRouteDirector.TUNNEL_TARGET: { final boolean secure = createTunnelToTarget(proxyAuthState, managedConn, route, request, context); this.log.debug("Tunnel to target created."); tracker.tunnelTarget(secure); } break; case HttpRouteDirector.TUNNEL_PROXY: { // The most simple example for this case is a proxy chain // of two proxies, where P1 must be tunnelled to P2. // route: Source -> P1 -> P2 -> Target (3 hops) // fact: Source -> P1 -> Target (2 hops) final int hop = fact.getHopCount() - 1; // the hop to establish final boolean secure = createTunnelToProxy(route, hop, context); this.log.debug("Tunnel to proxy created."); tracker.tunnelProxy(route.getHopTarget(hop), secure); } break; case HttpRouteDirector.LAYER_PROTOCOL: this.connManager.upgrade(managedConn, route, context); tracker.layerProtocol(route.isSecure()); break; case HttpRouteDirector.UNREACHABLE: throw new HttpException( "Unable to establish route: " + "planned = " + route + "; current = " + fact); case HttpRouteDirector.COMPLETE: this.connManager.routeComplete(managedConn, route, context); break; default: throw new IllegalStateException("Unknown step indicator " + step + " from RouteDirector."); } } while (step > HttpRouteDirector.COMPLETE); }
From source file:org.apache.http.impl.nio.client.AbstractClientExchangeHandler.java
final void verifytRoute() { if (!this.routeEstablished.get() && this.routeTrackerRef.get() == null) { final NHttpClientConnection managedConn = this.managedConnRef.get(); Asserts.check(managedConn != null, "Inconsistent state: managed connection is null"); final boolean routeComplete = this.connmgr.isRouteComplete(managedConn); this.routeEstablished.set(routeComplete); if (!routeComplete) { this.log.debug("Start connection routing"); final HttpRoute route = this.routeRef.get(); this.routeTrackerRef.set(new RouteTracker(route)); } else {/*from w w w.j a v a2 s . c om*/ this.log.debug("Connection route already established"); } } }
From source file:org.apache.http.impl.nio.conn.HttpPoolEntry.java
HttpPoolEntry(final Log log, final String id, final HttpRoute route, final IOSession session, final long timeToLive, final TimeUnit tunit) { super(id, route, session, timeToLive, tunit); this.log = log; this.tracker = new RouteTracker(route); }