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

java.lang.Object
  extended by org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager
All Implemented Interfaces:
ClientConnectionManager

public class ThreadSafeClientConnManager
extends java.lang.Object
implements ClientConnectionManager

Manages a pool of client connections.

This class is derived from MultiThreadedHttpConnectionManager in HttpClient 3. See there for original authors.

Since:
4.0
Version:
$Revision: 578385 $ $Date: 2007-09-22 09:22:57 +0200 (Sat, 22 Sep 2007) $
Author:
Roland Weber, Michael Becke

Field Summary
protected  AbstractConnPool connectionPool
          The pool of connections being managed.
protected  ClientConnectionOperator connOperator
          The operator for opening and updating connections.
protected  org.apache.http.params.HttpParams params
          The parameters of this connection manager.
protected  SchemeRegistry schemeRegistry
          The schemes supported by this connection manager.
 
Constructor Summary
ThreadSafeClientConnManager(org.apache.http.params.HttpParams params, SchemeRegistry schreg)
          Creates a new thread safe connection manager.
 
Method Summary
 void closeIdleConnections(long idleTimeout)
          Closes idle connections in the pool.
protected  ClientConnectionOperator createConnectionOperator(SchemeRegistry schreg)
          Hook for creating the connection operator.
protected  AbstractConnPool createConnectionPool()
          Hook for creating the connection pool.
 ManagedClientConnection getConnection(HttpRoute route)
          Obtains a connection.
 ManagedClientConnection getConnection(HttpRoute route, long timeout)
          Obtains a connection within a given time.
 int getConnectionsInPool()
          Gets the total number of pooled connections.
 int getConnectionsInPool(HttpRoute route)
          Gets the total number of pooled connections for the given route.
 org.apache.http.params.HttpParams getParams()
          Obtains the parameters of this manager.
 SchemeRegistry getSchemeRegistry()
          Obtains the scheme registry used by this manager.
 void releaseConnection(ManagedClientConnection conn)
          Releases a connection for use by others.
 void shutdown()
          Shuts down this connection manager and releases allocated resources.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

schemeRegistry

protected SchemeRegistry schemeRegistry
The schemes supported by this connection manager.


params

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


connectionPool

protected final AbstractConnPool connectionPool
The pool of connections being managed.


connOperator

protected ClientConnectionOperator connOperator
The operator for opening and updating connections.

Constructor Detail

ThreadSafeClientConnManager

public ThreadSafeClientConnManager(org.apache.http.params.HttpParams params,
                                   SchemeRegistry schreg)
Creates a new thread safe connection manager.

Parameters:
params - the parameters for this manager
schreg - the scheme registry, or null for the default registry
Method Detail

createConnectionPool

protected AbstractConnPool createConnectionPool()
Hook for creating the connection pool.

Returns:
the connection pool to use

createConnectionOperator

protected ClientConnectionOperator createConnectionOperator(SchemeRegistry schreg)
Hook for creating the connection operator. It is called by the constructor. Derived classes can override this method to change the instantiation of the operator. The default implementation here instantiates DefaultClientConnectionOperator.

Parameters:
schreg - the scheme registry to use, or null
Returns:
the connection operator to use

getSchemeRegistry

public SchemeRegistry getSchemeRegistry()
Description copied from interface: ClientConnectionManager
Obtains the scheme registry used by this manager.

Specified by:
getSchemeRegistry in interface ClientConnectionManager
Returns:
the scheme registry, never null

getConnection

public ManagedClientConnection getConnection(HttpRoute route)
                                      throws java.lang.InterruptedException
Description copied from interface: ClientConnectionManager
Obtains a connection. This method will block until a connection becomes available or the connection manager is shut down.

Specified by:
getConnection in interface ClientConnectionManager
Parameters:
route - where the connection should point to
Returns:
a connection that can be used to communicate along the given route
Throws:
java.lang.InterruptedException - if the calling thread is interrupted while waiting

getConnection

public ManagedClientConnection getConnection(HttpRoute route,
                                             long timeout)
                                      throws ConnectionPoolTimeoutException,
                                             java.lang.InterruptedException
Description copied from interface: ClientConnectionManager
Obtains a connection within a given time. This method will block until a connection becomes available, the timeout expires, or the connection manager is shut down.

Specified by:
getConnection in interface ClientConnectionManager
Parameters:
route - where the connection should point to
timeout - the timeout in milliseconds
Returns:
a connection that can be used to communicate along the given route
Throws:
ConnectionPoolTimeoutException - in case of a timeout
java.lang.InterruptedException - if the calling thread is interrupted while waiting

releaseConnection

public void releaseConnection(ManagedClientConnection conn)
Description copied from interface: ClientConnectionManager
Releases a connection for use by others. If the argument connection has been released before, the call will be ignored.

Specified by:
releaseConnection in interface ClientConnectionManager
Parameters:
conn - the connection to release

shutdown

public void shutdown()
Description copied from interface: ClientConnectionManager
Shuts down this connection manager and releases allocated resources. This includes closing all connections, whether they are currently used or not.

Specified by:
shutdown in interface ClientConnectionManager

getConnectionsInPool

public int getConnectionsInPool(HttpRoute route)
Gets the total number of pooled connections for the given route. This is the total number of connections that have been created and are still in use by this connection manager for the route. This value will not exceed the maximum number of connections per host.

Parameters:
route - the route in question
Returns:
the total number of pooled connections for that route

getConnectionsInPool

public int getConnectionsInPool()
Gets the total number of pooled connections. This is the total number of connections that have been created and are still in use by this connection manager. This value will not exceed the maximum number of connections in total.

Returns:
the total number of pooled connections

closeIdleConnections

public void closeIdleConnections(long idleTimeout)
Description copied from interface: ClientConnectionManager
Closes idle connections in the pool. Open connections in the pool that have not been used for the timespan given by the timeout argument will be closed. Currently allocated connections are not subject to this method.

Specified by:
closeIdleConnections in interface ClientConnectionManager
Parameters:
idleTimeout - the idle time in milliseconds

getParams

public org.apache.http.params.HttpParams getParams()
Description copied from interface: ClientConnectionManager
Obtains the parameters of this manager.

Specified by:
getParams in interface ClientConnectionManager
Returns:
the parameters, never null


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