Package org.apache.http.nio.pool
Class AbstractNIOConnPool<T,C,E extends PoolEntry<T,C>>
- java.lang.Object
-
- org.apache.http.nio.pool.AbstractNIOConnPool<T,C,E>
-
- Type Parameters:
T- routeC- connection objectE- pool entry
- All Implemented Interfaces:
ConnPool<T,E>,ConnPoolControl<T>
- Direct Known Subclasses:
BasicNIOConnPool
@Contract(threading=SAFE_CONDITIONAL) public abstract class AbstractNIOConnPool<T,C,E extends PoolEntry<T,C>> extends java.lang.Object implements ConnPool<T,E>, ConnPoolControl<T>
Abstract non-blocking connection pool.- Since:
- 4.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) classAbstractNIOConnPool.InternalSessionRequestCallback
-
Field Summary
Fields Modifier and Type Field Description private SocketAddressResolver<T>addressResolverprivate java.util.LinkedList<E>availableprivate java.util.concurrent.ConcurrentLinkedQueue<LeaseRequest<T,C,E>>completedRequestsprivate NIOConnFactory<T,C>connFactoryprivate intdefaultMaxPerRouteprivate ConnectingIOReactorioReactorprivate java.util.concurrent.atomic.AtomicBooleanisShutDownprivate java.util.Set<E>leasedprivate java.util.LinkedList<LeaseRequest<T,C,E>>leasingRequestsprivate java.util.concurrent.locks.Locklockprivate java.util.Map<T,java.lang.Integer>maxPerRouteprivate intmaxTotalprivate java.util.Set<SessionRequest>pendingprivate java.util.Map<T,RouteSpecificPool<T,C,E>>routeToPoolprivate SessionRequestCallbacksessionRequestCallback
-
Constructor Summary
Constructors Constructor Description AbstractNIOConnPool(ConnectingIOReactor ioReactor, NIOConnFactory<T,C> connFactory, int defaultMaxPerRoute, int maxTotal)AbstractNIOConnPool(ConnectingIOReactor ioReactor, NIOConnFactory<T,C> connFactory, SocketAddressResolver<T> addressResolver, int defaultMaxPerRoute, int maxTotal)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidcloseExpired()voidcloseIdle(long idletime, java.util.concurrent.TimeUnit timeUnit)protected abstract EcreateEntry(T route, C conn)protected voidenumAvailable(PoolEntryCallback<T,C> callback)Enumerates all available connections.protected voidenumEntries(java.util.Iterator<E> it, PoolEntryCallback<T,C> callback)Deprecated.(4.3.2)protected voidenumLeased(PoolEntryCallback<T,C> callback)Enumerates all leased connections.private voidfireCallbacks()intgetDefaultMaxPerRoute()private intgetMax(T route)intgetMaxPerRoute(T route)intgetMaxTotal()private RouteSpecificPool<T,C,E>getPool(T route)java.util.Set<T>getRoutes()Returns snapshot of all knows routesPoolStatsgetStats(T route)PoolStatsgetTotalStats()booleanisShutdown()java.util.concurrent.Future<E>lease(T route, java.lang.Object state)java.util.concurrent.Future<E>lease(T route, java.lang.Object state, long connectTimeout, long leaseTimeout, java.util.concurrent.TimeUnit timeUnit, FutureCallback<E> callback)java.util.concurrent.Future<E>lease(T route, java.lang.Object state, long connectTimeout, java.util.concurrent.TimeUnit timeUnit, FutureCallback<E> callback)java.util.concurrent.Future<E>lease(T route, java.lang.Object state, FutureCallback<E> callback)Attempts to lease a connection for the given route and with the given state from the pool.protected voidonLease(E entry)protected voidonRelease(E entry)protected voidonReuse(E entry)private voidprocessNextPendingRequest()private booleanprocessPendingRequest(LeaseRequest<T,C,E> request)private voidprocessPendingRequests()private voidpurgePoolMap()voidrelease(E entry, boolean reusable)Releases the pool entry back to the pool.protected voidrequestCancelled(SessionRequest request)protected voidrequestCompleted(SessionRequest request)protected voidrequestFailed(SessionRequest request)protected voidrequestTimeout(SessionRequest request)protected java.net.SocketAddressresolveLocalAddress(T route)Deprecated.(4.3) useSocketAddressResolverprotected java.net.SocketAddressresolveRemoteAddress(T route)Deprecated.(4.3) useSocketAddressResolvervoidsetDefaultMaxPerRoute(int max)voidsetMaxPerRoute(T route, int max)voidsetMaxTotal(int max)voidshutdown(long waitMs)java.lang.StringtoString()voidvalidatePendingRequests()
-
-
-
Field Detail
-
ioReactor
private final ConnectingIOReactor ioReactor
-
connFactory
private final NIOConnFactory<T,C> connFactory
-
addressResolver
private final SocketAddressResolver<T> addressResolver
-
sessionRequestCallback
private final SessionRequestCallback sessionRequestCallback
-
routeToPool
private final java.util.Map<T,RouteSpecificPool<T,C,E extends PoolEntry<T,C>>> routeToPool
-
leasingRequests
private final java.util.LinkedList<LeaseRequest<T,C,E extends PoolEntry<T,C>>> leasingRequests
-
pending
private final java.util.Set<SessionRequest> pending
-
completedRequests
private final java.util.concurrent.ConcurrentLinkedQueue<LeaseRequest<T,C,E extends PoolEntry<T,C>>> completedRequests
-
maxPerRoute
private final java.util.Map<T,java.lang.Integer> maxPerRoute
-
lock
private final java.util.concurrent.locks.Lock lock
-
isShutDown
private final java.util.concurrent.atomic.AtomicBoolean isShutDown
-
defaultMaxPerRoute
private volatile int defaultMaxPerRoute
-
maxTotal
private volatile int maxTotal
-
-
Constructor Detail
-
AbstractNIOConnPool
@Deprecated public AbstractNIOConnPool(ConnectingIOReactor ioReactor, NIOConnFactory<T,C> connFactory, int defaultMaxPerRoute, int maxTotal)
-
AbstractNIOConnPool
public AbstractNIOConnPool(ConnectingIOReactor ioReactor, NIOConnFactory<T,C> connFactory, SocketAddressResolver<T> addressResolver, int defaultMaxPerRoute, int maxTotal)
- Since:
- 4.3
-
-
Method Detail
-
resolveRemoteAddress
@Deprecated protected java.net.SocketAddress resolveRemoteAddress(T route)
Deprecated.(4.3) useSocketAddressResolver
-
resolveLocalAddress
@Deprecated protected java.net.SocketAddress resolveLocalAddress(T route)
Deprecated.(4.3) useSocketAddressResolver
-
onLease
protected void onLease(E entry)
- Since:
- 4.3
-
onRelease
protected void onRelease(E entry)
- Since:
- 4.3
-
onReuse
protected void onReuse(E entry)
- Since:
- 4.4
-
isShutdown
public boolean isShutdown()
-
shutdown
public void shutdown(long waitMs) throws java.io.IOException- Throws:
java.io.IOException
-
getPool
private RouteSpecificPool<T,C,E> getPool(T route)
-
lease
public java.util.concurrent.Future<E> lease(T route, java.lang.Object state, long connectTimeout, java.util.concurrent.TimeUnit timeUnit, FutureCallback<E> callback)
-
lease
public java.util.concurrent.Future<E> lease(T route, java.lang.Object state, long connectTimeout, long leaseTimeout, java.util.concurrent.TimeUnit timeUnit, FutureCallback<E> callback)
- Since:
- 4.3
-
lease
public java.util.concurrent.Future<E> lease(T route, java.lang.Object state, FutureCallback<E> callback)
Description copied from interface:ConnPoolAttempts to lease a connection for the given route and with the given state from the pool.- Specified by:
leasein interfaceConnPool<T,C>- Parameters:
route- route of the connection.state- arbitrary object that represents a particular state (usually a security principal or a unique token identifying the user whose credentials have been used while establishing the connection). May benull.callback- operation completion callback.- Returns:
- future for a leased pool entry.
-
release
public void release(E entry, boolean reusable)
Description copied from interface:ConnPoolReleases the pool entry back to the pool.
-
processPendingRequests
private void processPendingRequests()
-
processNextPendingRequest
private void processNextPendingRequest()
-
processPendingRequest
private boolean processPendingRequest(LeaseRequest<T,C,E> request)
-
fireCallbacks
private void fireCallbacks()
-
validatePendingRequests
public void validatePendingRequests()
-
requestCompleted
protected void requestCompleted(SessionRequest request)
-
requestCancelled
protected void requestCancelled(SessionRequest request)
-
requestFailed
protected void requestFailed(SessionRequest request)
-
requestTimeout
protected void requestTimeout(SessionRequest request)
-
getMax
private int getMax(T route)
-
setMaxTotal
public void setMaxTotal(int max)
- Specified by:
setMaxTotalin interfaceConnPoolControl<T>
-
getMaxTotal
public int getMaxTotal()
- Specified by:
getMaxTotalin interfaceConnPoolControl<T>
-
setDefaultMaxPerRoute
public void setDefaultMaxPerRoute(int max)
- Specified by:
setDefaultMaxPerRoutein interfaceConnPoolControl<T>
-
getDefaultMaxPerRoute
public int getDefaultMaxPerRoute()
- Specified by:
getDefaultMaxPerRoutein interfaceConnPoolControl<T>
-
setMaxPerRoute
public void setMaxPerRoute(T route, int max)
- Specified by:
setMaxPerRoutein interfaceConnPoolControl<T>
-
getMaxPerRoute
public int getMaxPerRoute(T route)
- Specified by:
getMaxPerRoutein interfaceConnPoolControl<T>
-
getTotalStats
public PoolStats getTotalStats()
- Specified by:
getTotalStatsin interfaceConnPoolControl<T>
-
getStats
public PoolStats getStats(T route)
- Specified by:
getStatsin interfaceConnPoolControl<T>
-
getRoutes
public java.util.Set<T> getRoutes()
Returns snapshot of all knows routes- Since:
- 4.4
-
enumAvailable
protected void enumAvailable(PoolEntryCallback<T,C> callback)
Enumerates all available connections.- Since:
- 4.3
-
enumLeased
protected void enumLeased(PoolEntryCallback<T,C> callback)
Enumerates all leased connections.- Since:
- 4.3
-
enumEntries
@Deprecated protected void enumEntries(java.util.Iterator<E> it, PoolEntryCallback<T,C> callback)
Deprecated.(4.3.2)
-
purgePoolMap
private void purgePoolMap()
-
closeIdle
public void closeIdle(long idletime, java.util.concurrent.TimeUnit timeUnit)
-
closeExpired
public void closeExpired()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-