Class ConnPoolByRoute

java.lang.Object
org.apache.http.impl.conn.tsccm.AbstractConnPool
org.apache.http.impl.conn.tsccm.ConnPoolByRoute

@Deprecated public class ConnPoolByRoute extends AbstractConnPool
Deprecated.
(4.2) use AbstractConnPool
A connection pool that maintains connections by route. This class is derived from MultiThreadedHttpConnectionManager in HttpClient 3.x, see there for original authors. It implements the same algorithm for connection re-use and connection-per-host enforcement:
  • connections are re-used only for the exact same route
  • connection limits are enforced per route rather than per host
Note that access to the pool data structures is synchronized via the poolLock in the base class, not via synchronized methods.
Since:
4.0
  • Field Details

    • operator

      protected final ClientConnectionOperator operator
      Deprecated.
      Connection operator for this pool
    • connPerRoute

      protected final ConnPerRoute connPerRoute
      Deprecated.
      Connections per route lookup
    • leasedConnections

      protected final Set<BasicPoolEntry> leasedConnections
      Deprecated.
      References to issued connections
    • freeConnections

      protected final Queue<BasicPoolEntry> freeConnections
      Deprecated.
      The list of free connections
    • waitingThreads

      protected final Queue<WaitingThread> waitingThreads
      Deprecated.
      The list of WaitingThreads waiting for a connection
    • routeToPool

      protected final Map<HttpRoute,RouteSpecificPool> routeToPool
      Deprecated.
      Map of route-specific pools
    • shutdown

      protected volatile boolean shutdown
      Deprecated.
    • maxTotalConnections

      protected volatile int maxTotalConnections
      Deprecated.
    • numConnections

      protected volatile int numConnections
      Deprecated.
  • Constructor Details

  • Method Details

    • getLock

      protected Lock getLock()
      Deprecated.
    • createFreeConnQueue

      protected Queue<BasicPoolEntry> createFreeConnQueue()
      Deprecated.
      Creates the queue for freeConnections. Called once by the constructor.
      Returns:
      a queue
    • createWaitingThreadQueue

      protected Queue<WaitingThread> createWaitingThreadQueue()
      Deprecated.
      Creates the queue for waitingThreads. Called once by the constructor.
      Returns:
      a queue
    • createRouteToPoolMap

      protected Map<HttpRoute,RouteSpecificPool> createRouteToPoolMap()
      Deprecated.
      Creates the map for routeToPool. Called once by the constructor.
      Returns:
      a map
    • newRouteSpecificPool

      protected RouteSpecificPool newRouteSpecificPool(HttpRoute route)
      Deprecated.
      Creates a new route-specific pool. Called by getRoutePool(org.apache.http.conn.routing.HttpRoute, boolean) when necessary.
      Parameters:
      route - the route
      Returns:
      the new pool
    • newWaitingThread

      protected WaitingThread newWaitingThread(Condition cond, RouteSpecificPool rospl)
      Deprecated.
      Creates a new waiting thread. Called by getRoutePool(org.apache.http.conn.routing.HttpRoute, boolean) when necessary.
      Parameters:
      cond - the condition to wait for
      rospl - the route specific pool, or null
      Returns:
      a waiting thread representation
    • getRoutePool

      protected RouteSpecificPool getRoutePool(HttpRoute route, boolean create)
      Deprecated.
      Get a route-specific pool of available connections.
      Parameters:
      route - the route
      create - whether to create the pool if it doesn't exist
      Returns:
      the pool for the argument route, never null if create is true
    • getConnectionsInPool

      public int getConnectionsInPool(HttpRoute route)
      Deprecated.
    • getConnectionsInPool

      public int getConnectionsInPool()
      Deprecated.
    • requestPoolEntry

      public PoolEntryRequest requestPoolEntry(HttpRoute route, Object state)
      Deprecated.
      Description copied from class: AbstractConnPool
      Returns a new PoolEntryRequest, from which a BasicPoolEntry can be obtained, or the request can be aborted.
      Specified by:
      requestPoolEntry in class AbstractConnPool
      Parameters:
      route - the route
      state - the state
      Returns:
      the entry request
    • getEntryBlocking

      protected BasicPoolEntry getEntryBlocking(HttpRoute route, Object state, long timeout, TimeUnit timeUnit, WaitingThreadAborter aborter) throws ConnectionPoolTimeoutException, InterruptedException
      Deprecated.
      Obtains a pool entry with a connection within the given timeout. If a WaitingThread is used to block, WaitingThreadAborter.setWaitingThread(WaitingThread) must be called before blocking, to allow the thread to be interrupted.
      Parameters:
      route - the route for which to get the connection
      timeout - the timeout, 0 or negative for no timeout
      timeUnit - the unit for the timeout, may be null only if there is no timeout
      aborter - an object which can abort a WaitingThread.
      Returns:
      pool entry holding a connection for the route
      Throws:
      ConnectionPoolTimeoutException - if the timeout expired
      InterruptedException - if the calling thread was interrupted
    • freeEntry

      public void freeEntry(BasicPoolEntry entry, boolean reusable, long validDuration, TimeUnit timeUnit)
      Deprecated.
      Description copied from class: AbstractConnPool
      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.
      Specified by:
      freeEntry in class AbstractConnPool
      Parameters:
      entry - the entry for the connection to release
      reusable - 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.
    • getFreeEntry

      protected BasicPoolEntry getFreeEntry(RouteSpecificPool rospl, Object state)
      Deprecated.
      If available, get a free pool entry for a route.
      Parameters:
      rospl - the route-specific pool from which to get an entry
      Returns:
      an available pool entry for the given route, or null if none is available
    • createEntry

      protected BasicPoolEntry createEntry(RouteSpecificPool rospl, ClientConnectionOperator op)
      Deprecated.
      Creates a new pool entry. This method assumes that the new connection will be handed out immediately.
      Parameters:
      rospl - the route-specific pool for which to create the entry
      op - the operator for creating a connection
      Returns:
      the new pool entry for a new connection
    • deleteEntry

      protected void deleteEntry(BasicPoolEntry entry)
      Deprecated.
      Deletes a given pool entry. This closes the pooled connection and removes all references, so that it can be GCed.

      Note: Does not remove the entry from the freeConnections list. It is assumed that the caller has already handled this step.

      Parameters:
      entry - the pool entry for the connection to delete
    • deleteLeastUsedEntry

      protected void deleteLeastUsedEntry()
      Deprecated.
      Delete an old, free pool entry to make room for a new one. Used to replace pool entries with ones for a different route.
    • handleLostEntry

      protected void handleLostEntry(HttpRoute route)
      Deprecated.
      Specified by:
      handleLostEntry in class AbstractConnPool
    • notifyWaitingThread

      protected void notifyWaitingThread(RouteSpecificPool rospl)
      Deprecated.
      Notifies a waiting thread that a connection is available. This will wake a thread waiting in the specific route pool, if there is one. Otherwise, a thread in the connection pool will be notified.
      Parameters:
      rospl - the pool in which to notify, or null
    • deleteClosedConnections

      public void deleteClosedConnections()
      Deprecated.
      Description copied from class: AbstractConnPool
      Deletes all entries for closed connections.
      Specified by:
      deleteClosedConnections in class AbstractConnPool
    • closeIdleConnections

      public void closeIdleConnections(long idletime, TimeUnit timeUnit)
      Deprecated.
      Closes idle connections.
      Overrides:
      closeIdleConnections in class AbstractConnPool
      Parameters:
      idletime - the time the connections should have been idle in order to be closed now
      timeUnit - the unit for the idletime
    • closeExpiredConnections

      public void closeExpiredConnections()
      Deprecated.
      Overrides:
      closeExpiredConnections in class AbstractConnPool
    • shutdown

      public void shutdown()
      Deprecated.
      Description copied from class: AbstractConnPool
      Shuts down this pool and all associated resources. Overriding methods MUST call the implementation here!
      Overrides:
      shutdown in class AbstractConnPool
    • setMaxTotalConnections

      public void setMaxTotalConnections(int max)
      Deprecated.
      since 4.1
    • getMaxTotalConnections

      public int getMaxTotalConnections()
      Deprecated.
      since 4.1