hc-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rola...@apache.org
Subject svn commit: r558839 - in /jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm: BadStaticMaps.java BasicPoolEntry.java BasicPoolEntryRef.java ThreadSafeClientConnManager.java
Date Mon, 23 Jul 2007 19:28:39 GMT
Author: rolandw
Date: Mon Jul 23 12:28:38 2007
New Revision: 558839

URL: http://svn.apache.org/viewvc?view=rev&rev=558839
Log:
HTTPCLIENT-636: more classes factored out of TSCCM

Added:
    jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
  (with props)
    jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
  (with props)
Modified:
    jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BadStaticMaps.java
    jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java

Modified: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BadStaticMaps.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BadStaticMaps.java?view=diff&rev=558839&r1=558838&r2=558839
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BadStaticMaps.java
(original)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BadStaticMaps.java
Mon Jul 23 12:28:38 2007
@@ -143,7 +143,7 @@
      * @see #removeReferenceToConnection
      */
     static /*default*/ void storeReferenceToConnection(
-        ThreadSafeClientConnManager.TrackingPoolEntry entry,
+        BasicPoolEntry entry,
         HttpRoute route,
         ThreadSafeClientConnManager.ConnectionPool connectionPool
     ) {
@@ -173,7 +173,7 @@
      * 
      * @see #storeReferenceToConnection
      */
-    static /*default*/ void removeReferenceToConnection(ThreadSafeClientConnManager.TrackingPoolEntry
entry) {
+    static /*default*/ void removeReferenceToConnection(BasicPoolEntry entry) {
         
         synchronized (REFERENCE_TO_CONNECTION_SOURCE) {
             REFERENCE_TO_CONNECTION_SOURCE.remove(entry.getWeakRef());
@@ -201,7 +201,7 @@
                     (ConnectionSource) REFERENCE_TO_CONNECTION_SOURCE.get(ref);
                 if (source.connectionPool == connectionPool) {
                     referenceIter.remove();
-                    Object entry = ref.get(); // TrackingPoolEntry
+                    Object entry = ref.get(); // BasicPoolEntry
                     if (entry != null) {
                         connectionsToClose.add(entry);
                     }
@@ -212,8 +212,8 @@
         // close and release the connections outside of the synchronized block
         // to avoid holding the lock for too long
         for (Iterator i = connectionsToClose.iterator(); i.hasNext();) {
-            ThreadSafeClientConnManager.TrackingPoolEntry entry =
-                (ThreadSafeClientConnManager.TrackingPoolEntry) i.next();
+            BasicPoolEntry entry =
+                (BasicPoolEntry) i.next();
             ThreadSafeClientConnManager.closeConnection(entry.getConnection());
             entry.getManager().releasePoolEntry(entry);
         }

Added: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java?view=auto&rev=558839
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
(added)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
Mon Jul 23 12:28:38 2007
@@ -0,0 +1,118 @@
+/*
+ * $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.tsccm;
+
+
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.WeakReference;
+
+import org.apache.http.conn.HttpRoute;
+import org.apache.http.conn.OperatedClientConnection;
+import org.apache.http.conn.ClientConnectionOperator;
+import org.apache.http.impl.conn.AbstractPoolEntry;
+
+
+
+/**
+ * Basic implementation of a connection pool entry.
+ */
+public class BasicPoolEntry extends AbstractPoolEntry {
+
+    /** The connection manager. */
+    private ThreadSafeClientConnManager manager;
+    //@@@ do we actually need the manager, or can we live with the pool alone?
+    //@@@ references to the manager will prevent it's GC
+
+
+    /**
+     * A weak reference to <code>this</code> used to detect GC of entries.
+     * Pool entries can only be GCed when they are allocated by an application
+     * and therefore not referenced with a hard link in the manager.
+     */
+    private BasicPoolEntryRef reference;
+
+   
+    /**
+     * Creates a new pool entry.
+     *
+     * @param tsccm   the connection manager
+     * @param occ     the underlying connection for this entry
+     * @param route   the planned route for the connection
+     * @param queue   the reference queue for tracking GC of this entry,
+     *                or <code>null</code>
+     */
+    public BasicPoolEntry(ThreadSafeClientConnManager tsccm,
+                          OperatedClientConnection occ,
+                          HttpRoute route,
+                          ReferenceQueue queue) {
+        super(occ, route);
+        if (tsccm == null) {
+            throw new IllegalArgumentException
+                ("Connection manager must not be null.");
+        }
+        if (route == null) {
+            throw new IllegalArgumentException
+                ("Planned route must not be null.");
+        }
+
+        this.manager = tsccm;
+        this.reference = new BasicPoolEntryRef(this, queue);
+    }
+
+
+    // non-javadoc, see base AbstractPoolEntry
+    protected ClientConnectionOperator getOperator() {
+        //@@@ pass the operator explicitly to the constructor
+        //@@@ or provide getter in the connection manager
+        return manager.connOperator;
+    }
+
+
+    protected final OperatedClientConnection getConnection() {
+        return super.connection;
+    }
+
+    protected final HttpRoute getPlannedRoute() {
+        return super.plannedRoute;
+    }
+
+    protected final WeakReference getWeakRef() {
+        return this.reference;
+    }
+
+    protected final ThreadSafeClientConnManager getManager() {
+        return this.manager;
+    }
+
+
+} // class BasicPoolEntry
+
+

Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntry.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java?view=auto&rev=558839
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
(added)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
Mon Jul 23 12:28:38 2007
@@ -0,0 +1,92 @@
+/*
+ * $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.tsccm;
+
+
+import java.lang.ref.WeakReference;
+import java.lang.ref.ReferenceQueue;
+
+import org.apache.http.conn.HttpRoute;
+
+
+
+/**
+ * A weak reference to a {@link BasicPoolEntry BasicPoolEntry}.
+ * This reference explicitly keeps the planned route, so the connection
+ * can be reclaimed if it is lost to garbage collection.
+ */
+public class BasicPoolEntryRef extends WeakReference {
+
+    /** The planned route of the entry. */
+    private final HttpRoute route;
+
+
+    /**
+     * Creates a new reference to a pool entry.
+     *
+     * @param entry   the pool entry, must not be <code>null</code>
+     * @param queue   the reference queue, or <code>null</code>
+     */
+    public BasicPoolEntryRef(BasicPoolEntry entry, ReferenceQueue queue) {
+        super(entry, queue);
+        if (entry == null) {
+            throw new IllegalArgumentException
+                ("Pool entry must not be null.");
+        }
+        route = entry.getPlannedRoute();
+    }
+
+
+    /**
+     * Obtain the planned route for the referenced entry.
+     * The planned route is still available, even if the entry is gone.
+     *
+     * @return      the planned route
+     */
+    public final HttpRoute getRoute() {
+        return this.route;
+    }
+
+
+    /* *
+     * Indicates whether this reference is still valid.
+     *
+     * @return <code>true</code> if the pool entry is still referenced,
+     *         <code>false</code> otherwise
+     * /
+    public final boolean isValid() {
+        //@@@ better sematics: allow explicit invalidation
+        return (super.get() != null);
+    }
+    */
+        
+} // class BasicPoolEntryRef
+

Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/BasicPoolEntryRef.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java?view=diff&rev=558839&r1=558838&r2=558839
==============================================================================
--- jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
(original)
+++ jakarta/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.java
Mon Jul 23 12:28:38 2007
@@ -92,7 +92,8 @@
     private ConnectionPool connectionPool;
 
     /** The operator for opening and updating connections. */
-    private ClientConnectionOperator connOperator;
+    //@@@ temporarily visible to BasicPoolEntry
+    /*private*/ ClientConnectionOperator connOperator;
 
     /** Indicates whether this connection manager is shut down. */
     private volatile boolean isShutDown;
@@ -162,7 +163,7 @@
                 + route + ", timeout = " + timeout);
         }
 
-        final TrackingPoolEntry entry = doGetConnection(route, timeout);
+        final BasicPoolEntry entry = doGetConnection(route, timeout);
 
         return new TSCCMConnAdapter(this, entry);
     }
@@ -178,11 +179,11 @@
      *
      * @throws ConnectionPoolTimeoutException   if the timeout expired
      */
-    private TrackingPoolEntry doGetConnection(HttpRoute route,
+    private BasicPoolEntry doGetConnection(HttpRoute route,
                                               long timeout)
         throws ConnectionPoolTimeoutException {
 
-        TrackingPoolEntry entry = null;
+        BasicPoolEntry entry = null;
 
         int maxHostConnections = HttpConnectionManagerParams
             .getMaxConnectionsPerHost(this.params, route);
@@ -303,7 +304,7 @@
      *
      * @return  the pool entry for the new connection
      */
-    private TrackingPoolEntry createPoolEntry(HttpRoute route) {
+    private BasicPoolEntry createPoolEntry(HttpRoute route) {
 
         OperatedClientConnection occ = connOperator.createConnection();
         return connectionPool.createEntry(route, occ);
@@ -372,7 +373,7 @@
                 LOG.debug("Exception shutting down released connection.",
                           iox);
         } finally {
-            TrackingPoolEntry entry = (TrackingPoolEntry) hca.getPoolEntry();
+            BasicPoolEntry entry = (BasicPoolEntry) hca.getPoolEntry();
             hca.detach();
             releasePoolEntry(entry);
         }
@@ -386,7 +387,7 @@
      *                  or <code>null</code>
      */
     //@@@ temporary default visibility, for BadStaticMaps
-    void /*default*/ releasePoolEntry(TrackingPoolEntry entry) {
+    void /*default*/ releasePoolEntry(BasicPoolEntry entry) {
 
         if (entry == null)
             return;
@@ -510,7 +511,7 @@
 
         /**
          * References to issued connections.
-         * Objects in this set are of class {@link PoolEntryRef PoolEntryRef},
+         * Objects in this set are of class {@link BasicPoolEntryRef BasicPoolEntryRef},
          * and point to the pool entry for the issued connection.
          * GCed connections are detected by the missing pool entries.
          */
@@ -563,7 +564,7 @@
             // close all free connections
             Iterator iter = freeConnections.iterator();
             while (iter.hasNext()) {
-                TrackingPoolEntry entry = (TrackingPoolEntry) iter.next();
+                BasicPoolEntry entry = (BasicPoolEntry) iter.next();
                 iter.remove();
                 closeConnection(entry.getConnection());
             }
@@ -573,9 +574,9 @@
             // close all connections that have been checked out
             iter = issuedConnections.iterator();
             while (iter.hasNext()) {
-                PoolEntryRef per = (PoolEntryRef) iter.next();
+                BasicPoolEntryRef per = (BasicPoolEntryRef) iter.next();
                 iter.remove();
-                TrackingPoolEntry entry = (TrackingPoolEntry) per.get();
+                BasicPoolEntry entry = (BasicPoolEntry) per.get();
                 if (entry != null) {
                     closeConnection(entry.getConnection());
                 }
@@ -610,14 +611,14 @@
          * @return the new pool entry
          */
         protected synchronized
-            TrackingPoolEntry createEntry(HttpRoute route,
+            BasicPoolEntry createEntry(HttpRoute route,
                                           OperatedClientConnection conn) {
 
             RouteConnPool routePool = getRoutePool(route);
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Allocating new connection, route=" + route);
             }
-            TrackingPoolEntry entry = new TrackingPoolEntry
+            BasicPoolEntry entry = new BasicPoolEntry
                 (ThreadSafeClientConnManager.this, conn, route, refQueue);
             numConnections++;
             routePool.numConnections++;
@@ -625,7 +626,7 @@
             // store a reference to this entry so that it can be cleaned up
             // in the event it is not correctly released
             BadStaticMaps.storeReferenceToConnection(entry, route, this); //@@@
-            issuedConnections.add(entry.reference);
+            issuedConnections.add(entry.getWeakRef());
 
             return entry;
         }
@@ -634,13 +635,14 @@
         // non-javadoc, see interface RefQueueHandler
         public synchronized void handleReference(Reference ref) {
 
-            if (ref instanceof PoolEntryRef) {
+            if (ref instanceof BasicPoolEntryRef) {
                 // check if the GCed pool entry was still in use
                 //@@@ find a way to detect this without lookup
-                //@@@ flag in the PoolEntryRef, to be reset when freed?
+                //@@@ flag in the BasicPoolEntryRef, to be reset when freed?
                 final boolean lost = issuedConnections.remove(ref);
                 if (lost) {
-                    final HttpRoute route = ((PoolEntryRef)ref).route;
+                    final HttpRoute route =
+                        ((BasicPoolEntryRef)ref).getRoute();
 
                     if (LOG.isDebugEnabled()) {
                         LOG.debug(
@@ -704,21 +706,21 @@
          *
          * @return an available connection for the given route
          */
-        public synchronized TrackingPoolEntry getFreeConnection(HttpRoute route) {
+        public synchronized BasicPoolEntry getFreeConnection(HttpRoute route) {
 
-            TrackingPoolEntry entry = null;
+            BasicPoolEntry entry = null;
 
             RouteConnPool routePool = getRoutePool(route);
 
             if (routePool.freeConnections.size() > 0) {
-                entry = (TrackingPoolEntry)
+                entry = (BasicPoolEntry)
                     routePool.freeConnections.removeLast();
                 freeConnections.remove(entry);
 
                 // store a reference to this entry so that it can be cleaned up
                 // in the event it is not correctly released
                 BadStaticMaps.storeReferenceToConnection(entry, route, this); //@@@
-                issuedConnections.add(entry.reference);
+                issuedConnections.add(entry.getWeakRef());
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("Getting free connection, route=" + route);
                 }
@@ -740,8 +742,8 @@
             Iterator iter = freeConnections.iterator();
             
             while (iter.hasNext()) {
-                TrackingPoolEntry entry =
-                    (TrackingPoolEntry) iter.next();
+                BasicPoolEntry entry =
+                    (BasicPoolEntry) iter.next();
                 if (!entry.getConnection().isOpen()) {
                     iter.remove();
                     deleteConnection(entry);
@@ -768,7 +770,7 @@
          * 
          * @param entry         the pool entry for the connection to delete
          */
-        private synchronized void deleteConnection(TrackingPoolEntry entry) {
+        private synchronized void deleteConnection(BasicPoolEntry entry) {
 
             HttpRoute route = entry.getPlannedRoute();
 
@@ -795,8 +797,8 @@
          */
         public synchronized void deleteLeastUsedConnection() {
 
-            TrackingPoolEntry entry =
-                (TrackingPoolEntry) freeConnections.removeFirst();
+            BasicPoolEntry entry =
+                (BasicPoolEntry) freeConnections.removeFirst();
 
             if (entry != null) {
                 deleteConnection(entry);
@@ -860,7 +862,7 @@
          *
          * @param entry         the pool entry for the connection
          */
-        private void freeConnection(TrackingPoolEntry entry) {
+        private void freeConnection(BasicPoolEntry entry) {
 
             HttpRoute route = entry.getPlannedRoute();
 
@@ -893,7 +895,7 @@
                 // control over it again. This also ensures that the connection
                 // manager can be GCed.
                 BadStaticMaps.removeReferenceToConnection(entry); //@@@
-                issuedConnections.remove(entry.reference); //@@@ move above
+                issuedConnections.remove(entry.getWeakRef()); //@@@ move above
                 if (numConnections == 0) {
                     // for some reason this pool didn't already exist
                     LOG.error("Master connection pool not found. " + route);
@@ -959,135 +961,6 @@
          */
         public boolean interruptedByConnectionPool = false;
     }
-
-
-    /**
-     * A weak reference to a pool entry.
-     * Needed for connection GC.
-     * Instances of this class can be kept as static references.
-     * If an issued connection is lost to garbage collection,
-     * it's pool entry is GC'd and the reference becomes invalid.
-     */
-    private static class PoolEntryRef extends WeakReference {
-
-        /** The planned route of the entry. */
-        private final HttpRoute route;
-
-
-        /**
-         * Creates a new reference to a pool entry.
-         *
-         * @param entry   the pool entry, must not be <code>null</code>
-         * @param queue   the reference queue, or <code>null</code>
-         */
-        public PoolEntryRef(AbstractPoolEntry entry, ReferenceQueue queue) {
-            super(entry, queue);
-            if (entry == null) {
-                throw new IllegalArgumentException
-                    ("Pool entry must not be null.");
-            }
-            route = ((TrackingPoolEntry)entry).getPlannedRoute();
-        }
-
-
-        /**
-         * Indicates whether this reference is still valid.
-         *
-         * @return <code>true</code> if the pool entry is still referenced,
-         *         <code>false</code> otherwise
-         */
-        public final boolean isValid() {
-            //@@@ method currently not used
-            //@@@ better sematics: allow explicit invalidation
-            return (super.get() != null);
-        }
-
-
-        /**
-         * Obtain the planned route for the referenced entry.
-         * The planned route is still available, even if the entry is gone.
-         *
-         * @return      the planned route
-         */
-        public final HttpRoute getRoute() {
-            return this.route;
-        }
-        
-    } // class PoolEntryRef
-
-    
-    /**
-     * A pool entry representing a connection that tracks it's route.
-     * For historical reasons, these entries are sometimes referred to
-     * as <i>connections</i> throughout the code.
-     */
-    //@@@ temporary default visibility, it's needed in BadStaticMaps
-    static /*default*/ class TrackingPoolEntry extends AbstractPoolEntry {
-
-        /** The connection manager. */
-        private ThreadSafeClientConnManager manager;
-
-
-        /**
-         * A weak reference to <code>this</code> used to detect GC of entries.
-         * Of course, pool entries can only be GCed when they are allocated
-         * and therefore not referenced with a hard link in the manager.
-         */
-        private PoolEntryRef reference;
-
-            
-        /**
-         * Creates a new pool entry.
-         *
-         * @param tsccm   the connection manager
-         * @param occ     the underlying connection for this entry
-         * @param route   the planned route for the connection
-         * @param queue   the reference queue for tracking GC of this entry,
-         *                or <code>null</code>
-         */
-        private TrackingPoolEntry(ThreadSafeClientConnManager tsccm,
-                                  OperatedClientConnection occ,
-                                  HttpRoute route,
-                                  ReferenceQueue queue) {
-            super(occ, route);
-            if (tsccm == null) {
-                throw new IllegalArgumentException
-                    ("Connection manager must not be null.");
-            }
-            if (route == null) {
-                throw new IllegalArgumentException
-                    ("Planned route must not be null.");
-            }
-            this.manager = tsccm;
-            this.reference = new PoolEntryRef(this, queue);
-        }
-
-
-        // non-javadoc, see base AbstractPoolEntry
-        protected ClientConnectionOperator getOperator() {
-            //@@@ if the operator is passed explicitly to the constructor,
-            //@@@ this class can be factored out
-            return manager.connOperator;
-        }
-
-
-        protected final OperatedClientConnection getConnection() {
-            return super.connection;
-        }
-
-        protected final HttpRoute getPlannedRoute() {
-            return super.plannedRoute;
-        }
-
-        protected final WeakReference getWeakRef() {
-            return this.reference;
-        }
-
-        protected final ThreadSafeClientConnManager getManager() {
-            return this.manager;
-        }
-
-    } // class TrackingPoolEntry
 
 
 } // class ThreadSafeClientConnManager



Mime
View raw message