## org.apache.http.impl.conn.tsccm
Class RouteSpecificPool

    java.lang.Object
      org.apache.http.impl.conn.tsccm.RouteSpecificPool

    @NotThreadSafe
    public class RouteSpecificPool

extends Object

A connection sub-pool for a specific route, used by `ConnPoolByRoute`. The methods in this class are unsynchronized. It is expected that the containing pool takes care of synchronization.

Since:
  4.0

Field Summary
`protected ConnPerRoute` `connPerRoute` Connections per route
`protected LinkedList<BasicPoolEntry>` `freeEntries` The list of free entries.
`protected int` `maxEntries` Deprecated.
`protected int` `numEntries` The number of created entries.
`protected HttpRoute` `route` The route this pool is for.
`protected Queue<WaitingThread>` `waitingThreads` The list of threads waiting for this pool.

Constructor Summary
`RouteSpecificPool(HttpRoute route, ConnPerRoute connPerRoute)` Creates a new route-specific pool.
`RouteSpecificPool(HttpRoute route, int maxEntries)` Deprecated. use `RouteSpecificPool(HttpRoute, ConnPerRoute)`

Method Summary
`BasicPoolEntry` `allocEntry(Object state)` Obtains a free entry from this pool, if one is available.
`void` `createdEntry(BasicPoolEntry entry)` Indicates creation of an entry for this pool.
`boolean` `deleteEntry(BasicPoolEntry entry)` Deletes an entry from this pool.
`void` `dropEntry()` Forgets about an entry from this pool.
`void` `freeEntry(BasicPoolEntry entry)` Returns an allocated entry to this pool.
`int` `getCapacity()` Return remaining capacity of this pool
`int` `getEntryCount()` Obtains the number of entries.
`int` `getMaxEntries()` Obtains the maximum number of entries allowed for this pool.
`HttpRoute` `getRoute()` Obtains the route for which this pool is specific.
`boolean` `hasThread()` Checks whether there is a waiting thread in this pool.
`boolean` `isUnused()` Indicates whether this pool is unused.
`WaitingThread` `nextThread()` Returns the next thread in the queue.
`void` `queueThread(WaitingThread wt)` Adds a waiting thread.
`void` `removeThread(WaitingThread wt)` Removes a waiting thread, if it is queued.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### route

    protected final HttpRoute route

  The route this pool is for.

### maxEntries

    @Deprecated
    protected final int maxEntries

  Deprecated.

### connPerRoute

    protected final ConnPerRoute connPerRoute

  Connections per route

### freeEntries

    protected final LinkedList<BasicPoolEntry> freeEntries

  The list of free entries. This list is managed LIFO, to increase idle times and allow for closing connections that are not really needed.

### waitingThreads

    protected final Queue<WaitingThread> waitingThreads

  The list of threads waiting for this pool.

### numEntries

    protected int numEntries

  The number of created entries.

Constructor Detail

### RouteSpecificPool

    @Deprecated
    public RouteSpecificPool(HttpRoute route,
                                        int maxEntries)

  Deprecated. use `RouteSpecificPool(HttpRoute, ConnPerRoute)`

### RouteSpecificPool

    public RouteSpecificPool(HttpRoute route,
                             ConnPerRoute connPerRoute)

  Creates a new route-specific pool.

  Parameters:
    `route` - the route for which to pool
    `connPerRoute` - the connections per route configuration

Method Detail

### getRoute

    public final HttpRoute getRoute()

  Obtains the route for which this pool is specific.

  Returns:
    the route

### getMaxEntries

    public final int getMaxEntries()

  Obtains the maximum number of entries allowed for this pool.

  Returns:
    the max entry number

### isUnused

    public boolean isUnused()

  Indicates whether this pool is unused. A pool is unused if there is neither an entry nor a waiting thread. All entries count, not only the free but also the allocated ones.

  Returns:
    `true` if this pool is unused, `false` otherwise

### getCapacity

    public int getCapacity()

  Return remaining capacity of this pool

  Returns:
    capacity

### getEntryCount

    public final int getEntryCount()

  Obtains the number of entries. This includes not only the free entries, but also those that have been created and are currently issued to an application.

  Returns:
    the number of entries for the route of this pool

### allocEntry

    public BasicPoolEntry allocEntry(Object state)

  Obtains a free entry from this pool, if one is available.

  Returns:
    an available pool entry, or `null` if there is none

### freeEntry

    public void freeEntry(BasicPoolEntry entry)

  Returns an allocated entry to this pool.

  Parameters:
    `entry` - the entry obtained from `allocEntry` or presented to `createdEntry`

### createdEntry

    public void createdEntry(BasicPoolEntry entry)

  Indicates creation of an entry for this pool. The entry will not be added to the list of free entries, it is only recognized as belonging to this pool now. It can then be passed to `freeEntry`.

  Parameters:
    `entry` - the entry that was created for this pool

### deleteEntry

    public boolean deleteEntry(BasicPoolEntry entry)

  Deletes an entry from this pool. Only entries that are currently free in this pool can be deleted. Allocated entries can not be deleted.

  Parameters:
    `entry` - the entry to delete from this pool
  Returns:
    `true` if the entry was found and deleted, or `false` if the entry was not found

### dropEntry

    public void dropEntry()

  Forgets about an entry from this pool. This method is used to indicate that an entry `allocated` from this pool has been lost and will not be returned.

### queueThread

    public void queueThread(WaitingThread wt)

  Adds a waiting thread. This pool makes no attempt to match waiting threads with pool entries. It is the caller's responsibility to check that there is no entry before adding a waiting thread.

  Parameters:
    `wt` - the waiting thread

### hasThread

    public boolean hasThread()

  Checks whether there is a waiting thread in this pool.

  Returns:
    `true` if there is a waiting thread, `false` otherwise

### nextThread

    public WaitingThread nextThread()

  Returns the next thread in the queue.

  Returns:
    a waiting thread, or `null` if there is none

### removeThread

    public void removeThread(WaitingThread wt)

  Removes a waiting thread, if it is queued.

  Parameters:
    `wt` - the waiting thread

Copyright © 1999-2011 The Apache Software Foundation. All Rights Reserved.