org.apache.http.impl.conn.tsccm
Class AbstractConnPool

java.lang.Object
  extended by org.apache.http.impl.conn.tsccm.AbstractConnPool
All Implemented Interfaces:
RefQueueHandler
Direct Known Subclasses:
ConnPoolByRoute

public abstract class AbstractConnPool
extends java.lang.Object
implements RefQueueHandler

An abstract connection pool. It is used by the ThreadSafeClientConnManager.


Field Summary
protected  org.apache.http.impl.conn.tsccm.AbstractConnPool.ConnMgrRef connManager
          The connection manager.
protected  IdleConnectionHandler idleConnHandler
          The handler for idle connections.
protected  boolean isShutDown
          Indicates whether this pool is shut down.
protected  java.util.Set issuedConnections
          References to issued connections.
protected  int numConnections
          The current total number of connections.
protected  org.apache.http.params.HttpParams params
          The parameters of this connection pool.
protected  java.lang.ref.ReferenceQueue refQueue
          A reference queue to track loss of pool entries to GC.
 
Constructor Summary
protected AbstractConnPool(ClientConnectionManager mgr)
          Creates a new connection pool.
 
Method Summary
protected  void closeConnection(OperatedClientConnection conn)
          Closes a connection from this pool.
 void closeIdleConnections(long idletime)
          Closes idle connections.
abstract  void deleteClosedConnections()
          Deletes all entries for closed connections.
abstract  void freeEntry(BasicPoolEntry entry)
          Returns an entry into the pool.
abstract  BasicPoolEntry getEntry(HttpRoute route, long timeout, ClientConnectionOperator operator)
          Obtains a pool entry with a connection within the given timeout.
protected abstract  void handleLostEntry(HttpRoute route)
          Handles cleaning up for a lost pool entry with the given route.
 void handleReference(java.lang.ref.Reference ref)
          Invoked when a reference is found on the queue.
 void shutdown()
          Shuts down this pool and all associated resources.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

issuedConnections

protected java.util.Set issuedConnections
References to issued connections. Objects in this set are of class BasicPoolEntryRef, and point to the pool entry for the issued connection. GCed connections are detected by the missing pool entries.


idleConnHandler

protected IdleConnectionHandler idleConnHandler
The handler for idle connections.


numConnections

protected int numConnections
The current total number of connections.


params

protected org.apache.http.params.HttpParams params
The parameters of this connection pool.


connManager

protected org.apache.http.impl.conn.tsccm.AbstractConnPool.ConnMgrRef connManager
The connection manager. This weak reference is used only to detect garbage collection of the manager. The connection pool MUST NOT keep a hard reference to the manager, or else the manager might never be GCed.


refQueue

protected java.lang.ref.ReferenceQueue refQueue
A reference queue to track loss of pool entries to GC.


isShutDown

protected volatile boolean isShutDown
Indicates whether this pool is shut down.

Constructor Detail

AbstractConnPool

protected AbstractConnPool(ClientConnectionManager mgr)
Creates a new connection pool.

Parameters:
mgr - the connection manager
Method Detail

getEntry

public abstract BasicPoolEntry getEntry(HttpRoute route,
                                        long timeout,
                                        ClientConnectionOperator operator)
                                 throws ConnectionPoolTimeoutException,
                                        java.lang.InterruptedException
Obtains a pool entry with a connection within the given timeout.

Parameters:
route - the route for which to get the connection
timeout - the timeout, or 0 for no timeout
operator - the connection operator, in case a connection has to be created
Returns:
pool entry holding a connection for the route
Throws:
ConnectionPoolTimeoutException - if the timeout expired
java.lang.InterruptedException - if the calling thread was interrupted

freeEntry

public abstract void freeEntry(BasicPoolEntry entry)
Returns an entry into the pool. The connection of the entry is expected to be in a suitable state, either open and re-usable, or closed. The pool will not make any attempt to determine whether it can be re-used or not.

Parameters:
entry - the entry for the connection to release

handleReference

public void handleReference(java.lang.ref.Reference ref)
Description copied from interface: RefQueueHandler
Invoked when a reference is found on the queue.

Specified by:
handleReference in interface RefQueueHandler
Parameters:
ref - the reference to handle

handleLostEntry

protected abstract void handleLostEntry(HttpRoute route)
Handles cleaning up for a lost pool entry with the given route. A lost pool entry corresponds to a connection that was garbage collected instead of being properly released.

Parameters:
route - the route of the pool entry that was lost

closeIdleConnections

public void closeIdleConnections(long idletime)
Closes idle connections.

Parameters:
idletime - the time the connections should have been idle in order to be closed now

deleteClosedConnections

public abstract void deleteClosedConnections()
Deletes all entries for closed connections.


shutdown

public void shutdown()
Shuts down this pool and all associated resources. Overriding methods MUST call the implementation here!


closeConnection

protected void closeConnection(OperatedClientConnection conn)
Closes a connection from this pool.

Parameters:
conn - the connection to close, or null


Copyright © 2000-2007 Apache Software Foundation. All Rights Reserved.