You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2008/04/09 23:29:48 UTC
svn commit: r646549 - in /httpcomponents/httpclient/trunk/module-client/src:
examples/org/apache/http/examples/conn/ main/java/org/apache/http/conn/
main/java/org/apache/http/impl/client/ main/java/org/apache/http/impl/conn/
main/java/org/apache/http/i...
Author: olegk
Date: Wed Apr 9 14:29:33 2008
New Revision: 646549
URL: http://svn.apache.org/viewvc?rev=646549&view=rev
Log:
HTTPCLIENT-652: Added optional state attribute to managed client connections
Added:
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java (with props)
Modified:
httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectDirect.java
httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectProxy.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionManager.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractPoolEntry.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/SingleClientConnManager.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/AbstractConnPool.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java
httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java
httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/GetConnThread.java
httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMNoServer.java
httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMWithServer.java
httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestDumbHelpers.java
httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestSpuriousWakeup.java
httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestWaitingThread.java
Modified: httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectDirect.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectDirect.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectDirect.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectDirect.java Wed Apr 9 14:29:33 2008
@@ -107,7 +107,7 @@
(target, null, supportedSchemes.getScheme(target).isLayered());
System.out.println("requesting connection for " + route);
- ClientConnectionRequest connRequest = clcm.requestConnection(route);
+ ClientConnectionRequest connRequest = clcm.requestConnection(route, null);
ManagedClientConnection conn = connRequest.getConnection(0, null);
try {
System.out.println("opening connection");
Modified: httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectProxy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectProxy.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectProxy.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/examples/org/apache/http/examples/conn/ManagerConnectProxy.java Wed Apr 9 14:29:33 2008
@@ -113,7 +113,7 @@
supportedSchemes.getScheme(target).isLayered());
System.out.println("requesting connection for " + route);
- ClientConnectionRequest connRequest = clcm.requestConnection(route);
+ ClientConnectionRequest connRequest = clcm.requestConnection(route, null);
ManagedClientConnection conn = connRequest.getConnection(0, null);
try {
System.out.println("opening connection");
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionManager.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionManager.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionManager.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/conn/ClientConnectionManager.java Wed Apr 9 14:29:33 2008
@@ -80,7 +80,7 @@
* {@link ManagedClientConnection} can be obtained, or the request can be
* aborted.
*/
- ClientConnectionRequest requestConnection(HttpRoute route)
+ ClientConnectionRequest requestConnection(HttpRoute route, Object state)
;
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/client/DefaultClientRequestDirector.java Wed Apr 9 14:29:33 2008
@@ -284,7 +284,8 @@
// Allocate connection if needed
if (managedConn == null) {
- ClientConnectionRequest connRequest = connManager.requestConnection(route);
+ ClientConnectionRequest connRequest = connManager.requestConnection(
+ route, null);
if (orig instanceof AbortableHttpRequest) {
((AbortableHttpRequest) orig).setConnectionRequest(connRequest);
}
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractPoolEntry.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractPoolEntry.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractPoolEntry.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/AbstractPoolEntry.java Wed Apr 9 14:29:33 2008
@@ -75,8 +75,8 @@
//@@@ currently accessed from connection manager(s) as attribute
//@@@ avoid that, derived classes should decide whether update is allowed
//@@@ SCCM: yes, TSCCM: no
- protected volatile HttpRoute plannedRoute;
-
+ protected volatile ConnRoute route;
+
/** The tracked route, or <code>null</code> before tracking starts. */
protected volatile RouteTracker tracker;
@@ -89,9 +89,9 @@
* or <code>null</code>
*/
protected AbstractPoolEntry(OperatedClientConnection occ,
- HttpRoute route) {
+ ConnRoute route) {
this.connection = occ;
- this.plannedRoute = route;
+ this.route = route;
this.tracker = null;
}
Added: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java?rev=646549&view=auto
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java (added)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java Wed Apr 9 14:29:33 2008
@@ -0,0 +1,98 @@
+/*
+ * $HeadURL$
+ * $Revision$
+ * $Date$
+ *
+ * ====================================================================
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.impl.conn;
+
+import org.apache.http.conn.routing.HttpRoute;
+import org.apache.http.util.LangUtils;
+
+/**
+ * A route for {@link ManagedClientConnection} along with the state information
+ * associated with that connection.
+ *
+ * @author <a href="mailto:oleg at ural.ru">Oleg Kalnichevski</a>
+ *
+ */
+public class ConnRoute {
+
+ private final HttpRoute route;
+ private final Object state;
+
+ public ConnRoute(final HttpRoute route, final Object state) {
+ super();
+ if (route == null) {
+ throw new IllegalArgumentException("HTTP route may not be null");
+ }
+ this.route = route;
+ this.state = state;
+ }
+
+ public HttpRoute getRoute() {
+ return this.route;
+ }
+
+ public Object getState() {
+ return this.state;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (obj == null) return false;
+ if (this == obj) return true;
+ if (obj instanceof ConnRoute) {
+ ConnRoute that = (ConnRoute) obj;
+ return this.route.equals(that.route)
+ && LangUtils.equals(this.state, that.state);
+ } else {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = LangUtils.HASH_SEED;
+ hash = LangUtils.hashCode(hash, this.route);
+ hash = LangUtils.hashCode(hash, this.state);
+ return hash;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append(this.route);
+ if (this.state != null) {
+ buffer.append(" [");
+ buffer.append(this.state);
+ buffer.append("]");
+ }
+ return buffer.toString();
+ }
+
+}
Propchange: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/ConnRoute.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/SingleClientConnManager.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/SingleClientConnManager.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/SingleClientConnManager.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/SingleClientConnManager.java Wed Apr 9 14:29:33 2008
@@ -178,7 +178,9 @@
}
- public final ClientConnectionRequest requestConnection(final HttpRoute route) {
+ public final ClientConnectionRequest requestConnection(
+ final HttpRoute route,
+ final Object state) {
return new ClientConnectionRequest() {
@@ -188,7 +190,8 @@
public ManagedClientConnection getConnection(
long timeout, TimeUnit tunit) {
- return SingleClientConnManager.this.getConnection(route);
+ return SingleClientConnManager.this.getConnection(
+ route, state);
}
};
@@ -204,7 +207,7 @@
* @return a connection that can be used to communicate
* along the given route
*/
- public ManagedClientConnection getConnection(HttpRoute route) {
+ public ManagedClientConnection getConnection(HttpRoute route, Object state) {
if (route == null) {
throw new IllegalArgumentException("Route may not be null.");
@@ -236,7 +239,7 @@
}
}
- managedConn = new ConnAdapter(uniquePoolEntry, route);
+ managedConn = new ConnAdapter(uniquePoolEntry, new ConnRoute(route, state));
return managedConn;
}
@@ -417,10 +420,10 @@
* @param entry the pool entry for the connection being wrapped
* @param plan the planned route for this connection
*/
- protected ConnAdapter(PoolEntry entry, HttpRoute plan) {
+ protected ConnAdapter(PoolEntry entry, ConnRoute route) {
super(SingleClientConnManager.this, entry);
markReusable();
- entry.plannedRoute = plan;
+ entry.route = route;
}
}
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/AbstractConnPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/AbstractConnPool.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/AbstractConnPool.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/AbstractConnPool.java Wed Apr 9 14:29:33 2008
@@ -43,13 +43,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.conn.ClientConnectionOperator;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.ConnectionPoolTimeoutException;
import org.apache.http.conn.OperatedClientConnection;
import org.apache.http.params.HttpParams;
import org.apache.http.impl.conn.IdleConnectionHandler;
+import org.apache.http.impl.conn.ConnRoute;
@@ -209,7 +209,7 @@
* if the calling thread was interrupted
*/
public final
- BasicPoolEntry getEntry(HttpRoute route, long timeout, TimeUnit tunit,
+ BasicPoolEntry getEntry(ConnRoute route, long timeout, TimeUnit tunit,
ClientConnectionOperator operator)
throws ConnectionPoolTimeoutException, InterruptedException {
return newPoolEntryRequest().getPoolEntry(route, timeout, tunit, operator);
@@ -247,7 +247,7 @@
//@@@ flag in the BasicPoolEntryRef, to be reset when freed?
final boolean lost = issuedConnections.remove(ref);
if (lost) {
- final HttpRoute route =
+ final ConnRoute route =
((BasicPoolEntryRef)ref).getRoute();
if (LOG.isDebugEnabled()) {
LOG.debug("Connection garbage collected. " + route);
@@ -274,7 +274,7 @@
*
* @param route the route of the pool entry that was lost
*/
- protected abstract void handleLostEntry(HttpRoute route)
+ protected abstract void handleLostEntry(ConnRoute route)
;
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java Wed Apr 9 14:29:33 2008
@@ -33,10 +33,10 @@
import java.lang.ref.ReferenceQueue;
-import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.conn.OperatedClientConnection;
import org.apache.http.conn.ClientConnectionOperator;
import org.apache.http.impl.conn.AbstractPoolEntry;
+import org.apache.http.impl.conn.ConnRoute;
@@ -67,7 +67,7 @@
* or <code>null</code>
*/
public BasicPoolEntry(ClientConnectionOperator op,
- HttpRoute route,
+ ConnRoute route,
ReferenceQueue<Object> queue) {
//@@@ create connection in base? or delay creation until needed?
super(op.createConnection(), route);
@@ -92,8 +92,8 @@
return super.connection;
}
- protected final HttpRoute getPlannedRoute() {
- return super.plannedRoute;
+ protected final ConnRoute getPlannedRoute() {
+ return super.route;
}
protected final BasicPoolEntryRef getWeakRef() {
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java Wed Apr 9 14:29:33 2008
@@ -34,7 +34,7 @@
import java.lang.ref.WeakReference;
import java.lang.ref.ReferenceQueue;
-import org.apache.http.conn.routing.HttpRoute;
+import org.apache.http.impl.conn.ConnRoute;
@@ -46,7 +46,7 @@
public class BasicPoolEntryRef extends WeakReference<BasicPoolEntry> {
/** The planned route of the entry. */
- private final HttpRoute route;
+ private final ConnRoute route;
/**
@@ -72,7 +72,7 @@
*
* @return the planned route
*/
- public final HttpRoute getRoute() {
+ public final ConnRoute getRoute() {
return this.route;
}
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ConnPoolByRoute.java Wed Apr 9 14:29:33 2008
@@ -46,6 +46,7 @@
import org.apache.http.conn.ClientConnectionOperator;
import org.apache.http.conn.ConnectionPoolTimeoutException;
import org.apache.http.conn.params.HttpConnectionManagerParams;
+import org.apache.http.impl.conn.ConnRoute;
@@ -83,7 +84,7 @@
* Keys are of class {@link HttpRoute},
* values of class {@link RouteSpecificPool}.
*/
- protected final Map<HttpRoute,RouteSpecificPool> routeToPool;
+ protected final Map<ConnRoute, RouteSpecificPool> routeToPool;
@@ -127,8 +128,8 @@
*
* @return a map
*/
- protected Map<HttpRoute,RouteSpecificPool> createRouteToPoolMap() {
- return new HashMap<HttpRoute,RouteSpecificPool>();
+ protected Map<ConnRoute,RouteSpecificPool> createRouteToPoolMap() {
+ return new HashMap<ConnRoute, RouteSpecificPool>();
}
@@ -140,7 +141,7 @@
*
* @return the new pool
*/
- protected RouteSpecificPool newRouteSpecificPool(HttpRoute route) {
+ protected RouteSpecificPool newRouteSpecificPool(ConnRoute route) {
return new RouteSpecificPool(route);
}
@@ -169,7 +170,7 @@
* @return the pool for the argument route,
* never <code>null</code> if <code>create</code> is <code>true</code>
*/
- protected RouteSpecificPool getRoutePool(HttpRoute route,
+ protected RouteSpecificPool getRoutePool(ConnRoute route,
boolean create) {
RouteSpecificPool rospl = null;
@@ -192,7 +193,7 @@
//@@@ consider alternatives for gathering statistics
- public int getConnectionsInPool(HttpRoute route) {
+ public int getConnectionsInPool(ConnRoute route) {
try {
poolLock.lock();
@@ -222,9 +223,12 @@
}
}
- public BasicPoolEntry getPoolEntry(HttpRoute route, long timeout,
- TimeUnit tunit, ClientConnectionOperator operator)
- throws InterruptedException, ConnectionPoolTimeoutException {
+ public BasicPoolEntry getPoolEntry(
+ ConnRoute route,
+ long timeout,
+ TimeUnit tunit,
+ ClientConnectionOperator operator)
+ throws InterruptedException, ConnectionPoolTimeoutException {
return getEntryBlocking(route, timeout, tunit, operator, aborter);
}
@@ -251,14 +255,15 @@
* @throws InterruptedException
* if the calling thread was interrupted
*/
- protected BasicPoolEntry getEntryBlocking(HttpRoute route,
+ protected BasicPoolEntry getEntryBlocking(
+ ConnRoute route,
long timeout, TimeUnit tunit,
ClientConnectionOperator operator,
Aborter aborter)
throws ConnectionPoolTimeoutException, InterruptedException {
int maxHostConnections = HttpConnectionManagerParams
- .getMaxConnectionsPerHost(this.params, route);
+ .getMaxConnectionsPerHost(this.params, route.getRoute());
int maxTotalConnections = HttpConnectionManagerParams
.getMaxTotalConnections(this.params);
@@ -358,7 +363,7 @@
@Override
public void freeEntry(BasicPoolEntry entry) {
- HttpRoute route = entry.getPlannedRoute();
+ ConnRoute route = entry.getPlannedRoute();
if (LOG.isDebugEnabled()) {
LOG.debug("Freeing connection. " + route);
}
@@ -488,7 +493,7 @@
*/
protected void deleteEntry(BasicPoolEntry entry) {
- HttpRoute route = entry.getPlannedRoute();
+ ConnRoute route = entry.getPlannedRoute();
if (LOG.isDebugEnabled()) {
LOG.debug("Deleting connection. " + route);
@@ -541,7 +546,7 @@
// non-javadoc, see base class AbstractConnPool
@Override
- protected void handleLostEntry(HttpRoute route) {
+ protected void handleLostEntry(ConnRoute route) {
try {
poolLock.lock();
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/PoolEntryRequest.java Wed Apr 9 14:29:33 2008
@@ -1,7 +1,7 @@
/*
- * $HeadURL:$
- * $Revision:$
- * $Date:$
+ * $HeadURL$
+ * $Revision$
+ * $Date$
*
* ====================================================================
*
@@ -35,6 +35,7 @@
import org.apache.http.conn.ClientConnectionOperator;
import org.apache.http.conn.ConnectionPoolTimeoutException;
import org.apache.http.conn.routing.HttpRoute;
+import org.apache.http.impl.conn.ConnRoute;
/**
* Encapsulates a request for a {@link BasicPoolEntry}.
@@ -60,9 +61,12 @@
* @throws InterruptedException
* if the calling thread was interrupted
*/
- BasicPoolEntry getPoolEntry(HttpRoute route, long timeout, TimeUnit unit,
- ClientConnectionOperator operator) throws InterruptedException,
- ConnectionPoolTimeoutException;
+ BasicPoolEntry getPoolEntry(
+ ConnRoute route,
+ long timeout,
+ TimeUnit unit,
+ ClientConnectionOperator operator)
+ throws InterruptedException, ConnectionPoolTimeoutException;
/**
* Aborts the active or next call to
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/RouteSpecificPool.java Wed Apr 9 14:29:33 2008
@@ -33,7 +33,7 @@
import java.util.Queue;
import java.util.LinkedList;
-import org.apache.http.conn.routing.HttpRoute;
+import org.apache.http.impl.conn.ConnRoute;
/**
@@ -44,7 +44,7 @@
public class RouteSpecificPool {
/** The route this pool is for. */
- protected final HttpRoute route;
+ protected final ConnRoute route;
/**
* The list of free entries.
@@ -65,8 +65,8 @@
*
* @param r the route for which to pool
*/
- public RouteSpecificPool(HttpRoute r) {
- this.route = r;
+ public RouteSpecificPool(ConnRoute route) {
+ this.route = route;
this.freeEntries = new LinkedList<BasicPoolEntry>();
this.waitingThreads = new LinkedList<WaitingThread>();
this.numEntries = 0;
@@ -78,7 +78,7 @@
*
* @return the route
*/
- public final HttpRoute getRoute() {
+ public final ConnRoute getRoute() {
return route;
}
Modified: httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java Wed Apr 9 14:29:33 2008
@@ -45,6 +45,7 @@
import org.apache.http.conn.OperatedClientConnection;
import org.apache.http.params.HttpParams;
import org.apache.http.impl.conn.DefaultClientConnectionOperator;
+import org.apache.http.impl.conn.ConnRoute;
@@ -147,7 +148,7 @@
}
- public ClientConnectionRequest requestConnection(final HttpRoute route) {
+ public ClientConnectionRequest requestConnection(final HttpRoute route, final Object state) {
final PoolEntryRequest poolRequest = connectionPool.newPoolEntryRequest();
@@ -169,7 +170,8 @@
+ route + ", timeout = " + timeout);
}
- final BasicPoolEntry entry = poolRequest.getPoolEntry(route, timeout, tunit, connOperator);
+ final BasicPoolEntry entry = poolRequest.getPoolEntry(
+ new ConnRoute(route, state), timeout, tunit, connOperator);
return new BasicPooledConnAdapter(ThreadSafeClientConnManager.this, entry);
}
@@ -240,8 +242,9 @@
*
* @return the total number of pooled connections for that route
*/
- public int getConnectionsInPool(HttpRoute route) {
- return ((ConnPoolByRoute)connectionPool).getConnectionsInPool(route);
+ public int getConnectionsInPool(HttpRoute route, Object state) {
+ return ((ConnPoolByRoute)connectionPool).getConnectionsInPool(
+ new ConnRoute(route, state));
}
Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/client/TestDefaultClientRequestDirector.java Wed Apr 9 14:29:33 2008
@@ -343,7 +343,7 @@
}
@Override
- public ClientConnectionRequest requestConnection(HttpRoute route) {
+ public ClientConnectionRequest requestConnection(HttpRoute route, Object state) {
// If this is the redirect route, stub the return value
// so-as to pretend the host is waiting on a slot...
if(route.getTargetHost().getHostName().equals("localhost")) {
@@ -372,7 +372,7 @@
}
};
} else {
- return super.requestConnection(route);
+ return super.requestConnection(route, state);
}
}
}
@@ -387,8 +387,8 @@
}
@Override
- public ManagedClientConnection getConnection(HttpRoute route) {
- allocatedConnection = super.getConnection(route);
+ public ManagedClientConnection getConnection(HttpRoute route, Object state) {
+ allocatedConnection = super.getConnection(route, state);
return allocatedConnection;
}
@@ -423,7 +423,9 @@
throw new UnsupportedOperationException("just a mockup");
}
- public ClientConnectionRequest requestConnection(final HttpRoute route) {
+ public ClientConnectionRequest requestConnection(
+ final HttpRoute route,
+ final Object state) {
return new ClientConnectionRequest() {
@@ -489,7 +491,9 @@
throw new UnsupportedOperationException("just a mockup");
}
- public ClientConnectionRequest requestConnection(final HttpRoute route) {
+ public ClientConnectionRequest requestConnection(
+ final HttpRoute route,
+ final Object state) {
final Thread currentThread = Thread.currentThread();
Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/GetConnThread.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/GetConnThread.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/GetConnThread.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/GetConnThread.java Wed Apr 9 14:29:33 2008
@@ -60,7 +60,7 @@
*/
public GetConnThread(ClientConnectionManager mgr,
HttpRoute route, long timeout) {
- this(mgr.requestConnection(route), route, timeout);
+ this(mgr.requestConnection(route, null), route, timeout);
}
/**
Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMNoServer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMNoServer.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMNoServer.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMNoServer.java Wed Apr 9 14:29:33 2008
@@ -79,14 +79,14 @@
final HttpRoute route,
long timeout,
TimeUnit unit) throws ConnectionPoolTimeoutException, InterruptedException {
- ClientConnectionRequest connRequest = mgr.requestConnection(route);
+ ClientConnectionRequest connRequest = mgr.requestConnection(route, null);
return connRequest.getConnection(timeout, unit);
}
private static ManagedClientConnection getConnection(
final ClientConnectionManager mgr,
final HttpRoute route) throws ConnectionPoolTimeoutException, InterruptedException {
- ClientConnectionRequest connRequest = mgr.requestConnection(route);
+ ClientConnectionRequest connRequest = mgr.requestConnection(route, null);
return connRequest.getConnection(0, null);
}
@@ -406,13 +406,13 @@
assertEquals("connectionsInPool",
mgr.getConnectionsInPool(), 1);
assertEquals("connectionsInPool(host)",
- mgr.getConnectionsInPool(route), 1);
+ mgr.getConnectionsInPool(route, null), 1);
mgr.releaseConnection(conn);
assertEquals("connectionsInPool",
mgr.getConnectionsInPool(), 1);
assertEquals("connectionsInPool(host)",
- mgr.getConnectionsInPool(route), 1);
+ mgr.getConnectionsInPool(route, null), 1);
// this implicitly deletes them
mgr.closeIdleConnections(0L, TimeUnit.MILLISECONDS);
@@ -420,7 +420,7 @@
assertEquals("connectionsInPool",
mgr.getConnectionsInPool(), 0);
assertEquals("connectionsInPool(host)",
- mgr.getConnectionsInPool(route), 0);
+ mgr.getConnectionsInPool(route, null), 0);
mgr.shutdown();
}
@@ -575,7 +575,7 @@
// get the only connection, then start an extra thread
ManagedClientConnection conn = getConnection(mgr, route, 1L, TimeUnit.MILLISECONDS);
- ClientConnectionRequest request = mgr.requestConnection(route);
+ ClientConnectionRequest request = mgr.requestConnection(route, null);
GetConnThread gct = new GetConnThread(request, route, 0L); // no timeout
gct.start();
Thread.sleep(100); // give extra thread time to block
@@ -617,7 +617,7 @@
// get the only connection, then start an extra thread
ManagedClientConnection conn = getConnection(mgr, route, 1L, TimeUnit.MILLISECONDS);
- ClientConnectionRequest request = mgr.requestConnection(route);
+ ClientConnectionRequest request = mgr.requestConnection(route, null);
request.abortRequest();
GetConnThread gct = new GetConnThread(request, route, 0L); // no timeout
Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMWithServer.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMWithServer.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMWithServer.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/TestTSCCMWithServer.java Wed Apr 9 14:29:33 2008
@@ -181,14 +181,14 @@
final HttpRoute route,
long timeout,
TimeUnit unit) throws ConnectionPoolTimeoutException, InterruptedException {
- ClientConnectionRequest connRequest = mgr.requestConnection(route);
+ ClientConnectionRequest connRequest = mgr.requestConnection(route, null);
return connRequest.getConnection(timeout, unit);
}
private static ManagedClientConnection getConnection(
final ClientConnectionManager mgr,
final HttpRoute route) throws ConnectionPoolTimeoutException, InterruptedException {
- ClientConnectionRequest connRequest = mgr.requestConnection(route);
+ ClientConnectionRequest connRequest = mgr.requestConnection(route, null);
return connRequest.getConnection(0, null);
}
Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestDumbHelpers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestDumbHelpers.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestDumbHelpers.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestDumbHelpers.java Wed Apr 9 14:29:33 2008
@@ -50,6 +50,7 @@
import org.apache.http.conn.scheme.SocketFactory;
import org.apache.http.conn.ClientConnectionOperator;
import org.apache.http.impl.conn.DefaultClientConnectionOperator;
+import org.apache.http.impl.conn.ConnRoute;
@@ -113,13 +114,13 @@
// expected
}
- bpe = new BasicPoolEntry(ccop, route, null);
+ bpe = new BasicPoolEntry(ccop, new ConnRoute(route, null), null);
assertEquals ("wrong operator", ccop, bpe.getOperator());
- assertEquals ("wrong route", route, bpe.getPlannedRoute());
+ assertEquals ("wrong route", route, bpe.getPlannedRoute().getRoute());
assertNotNull("missing ref", bpe.getWeakRef());
assertEquals("bad weak ref", bpe, bpe.getWeakRef().get());
- assertEquals("bad ref route", route, bpe.getWeakRef().getRoute());
+ assertEquals("bad ref route", route, bpe.getWeakRef().getRoute().getRoute());
}
Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestSpuriousWakeup.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestSpuriousWakeup.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestSpuriousWakeup.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestSpuriousWakeup.java Wed Apr 9 14:29:33 2008
@@ -151,7 +151,7 @@
try {
// take out the only connection
- ClientConnectionRequest connRequest = mgr.requestConnection(ROUTE);
+ ClientConnectionRequest connRequest = mgr.requestConnection(ROUTE, null);
ManagedClientConnection conn = connRequest.getConnection(0, null);
assertNotNull(conn);
Modified: httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestWaitingThread.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestWaitingThread.java?rev=646549&r1=646548&r2=646549&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestWaitingThread.java (original)
+++ httpcomponents/httpclient/trunk/module-client/src/test/java/org/apache/http/impl/conn/tsccm/TestWaitingThread.java Wed Apr 9 14:29:33 2008
@@ -40,6 +40,7 @@
import org.apache.http.HttpHost;
import org.apache.http.conn.routing.HttpRoute;
+import org.apache.http.impl.conn.ConnRoute;
@@ -83,7 +84,7 @@
assertNull ("thread from nowhere", wt.getThread());
HttpRoute route = new HttpRoute(TARGET);
- RouteSpecificPool rospl = new RouteSpecificPool(route);
+ RouteSpecificPool rospl = new RouteSpecificPool(new ConnRoute(route, null));
wt = new WaitingThread(cnd, rospl);
assertEquals("wrong condition", cnd, wt.getCondition());
assertEquals("wrong pool", rospl, wt.getPool());