|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.http.impl.conn.tsccm.AbstractConnPool
public abstract class AbstractConnPool
An abstract connection pool.
It is used by the ThreadSafeClientConnManager
.
The abstract pool includes a poolLock
, which is used to
synchronize access to the internal pool datastructures.
Don't use synchronized
for that purpose!
Field Summary | |
---|---|
protected IdleConnectionHandler |
idleConnHandler
The handler for idle connections. |
protected boolean |
isShutDown
Indicates whether this pool is shut down. |
protected java.util.Set<BasicPoolEntryRef> |
issuedConnections
References to issued connections. |
protected int |
numConnections
The current total number of connections. |
protected java.util.concurrent.locks.Lock |
poolLock
The global lock for this pool. |
protected java.lang.ref.ReferenceQueue<java.lang.Object> |
refQueue
A reference queue to track loss of pool entries to GC. |
Constructor Summary | |
---|---|
protected |
AbstractConnPool()
Creates a new connection pool. |
Method Summary | |
---|---|
protected void |
closeConnection(OperatedClientConnection conn)
Closes a connection from this pool. |
void |
closeExpiredConnections()
|
void |
closeIdleConnections(long idletime,
java.util.concurrent.TimeUnit tunit)
Closes idle connections. |
abstract void |
deleteClosedConnections()
Deletes all entries for closed connections. |
void |
enableConnectionGC()
Enables connection garbage collection (GC). |
abstract void |
freeEntry(BasicPoolEntry entry,
boolean reusable,
long validDuration,
java.util.concurrent.TimeUnit timeUnit)
Returns an entry into the pool. |
BasicPoolEntry |
getEntry(HttpRoute route,
java.lang.Object state,
long timeout,
java.util.concurrent.TimeUnit tunit)
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. |
abstract PoolEntryRequest |
requestPoolEntry(HttpRoute route,
java.lang.Object state)
Returns a new PoolEntryRequest , from which a BasicPoolEntry
can be obtained, or the request can be aborted. |
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 |
---|
protected final java.util.concurrent.locks.Lock poolLock
protected java.util.Set<BasicPoolEntryRef> issuedConnections
BasicPoolEntryRef
,
and point to the pool entry for the issued connection.
GCed connections are detected by the missing pool entries.
protected IdleConnectionHandler idleConnHandler
protected int numConnections
protected java.lang.ref.ReferenceQueue<java.lang.Object> refQueue
protected volatile boolean isShutDown
Constructor Detail |
---|
protected AbstractConnPool()
Method Detail |
---|
public void enableConnectionGC() throws java.lang.IllegalStateException
java.lang.IllegalStateException
- if connection GC is already enabled, or if it cannot be
enabled because there already are pool entriespublic final BasicPoolEntry getEntry(HttpRoute route, java.lang.Object state, long timeout, java.util.concurrent.TimeUnit tunit) throws ConnectionPoolTimeoutException, java.lang.InterruptedException
route
- the route for which to get the connectiontimeout
- the timeout, 0 or negative for no timeouttunit
- the unit for the timeout
,
may be null
only if there is no timeout
ConnectionPoolTimeoutException
- if the timeout expired
java.lang.InterruptedException
- if the calling thread was interruptedpublic abstract PoolEntryRequest requestPoolEntry(HttpRoute route, java.lang.Object state)
PoolEntryRequest
, from which a BasicPoolEntry
can be obtained, or the request can be aborted.
public abstract void freeEntry(BasicPoolEntry entry, boolean reusable, long validDuration, java.util.concurrent.TimeUnit timeUnit)
entry
- the entry for the connection to releasereusable
- true
if the entry is deemed
reusable, false
otherwise.validDuration
- The duration that the entry should remain free and reusable.timeUnit
- The unit of time the duration is measured in.public void handleReference(java.lang.ref.Reference<?> ref)
RefQueueHandler
handleReference
in interface RefQueueHandler
ref
- the reference to handleprotected abstract void handleLostEntry(HttpRoute route)
route
- the route of the pool entry that was lostpublic void closeIdleConnections(long idletime, java.util.concurrent.TimeUnit tunit)
idletime
- the time the connections should have been idle
in order to be closed nowtunit
- the unit for the idletime
public void closeExpiredConnections()
public abstract void deleteClosedConnections()
public void shutdown()
protected void closeConnection(OperatedClientConnection conn)
conn
- the connection to close, or null
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |