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) class
AbstractNIOConnPool.InternalSessionRequestCallback
-
Field Summary
Fields Modifier and Type Field Description private SocketAddressResolver<T>
addressResolver
private java.util.LinkedList<E>
available
private java.util.concurrent.ConcurrentLinkedQueue<LeaseRequest<T,C,E>>
completedRequests
private NIOConnFactory<T,C>
connFactory
private int
defaultMaxPerRoute
private ConnectingIOReactor
ioReactor
private java.util.concurrent.atomic.AtomicBoolean
isShutDown
private java.util.Set<E>
leased
private java.util.LinkedList<LeaseRequest<T,C,E>>
leasingRequests
private java.util.concurrent.locks.Lock
lock
private java.util.Map<T,java.lang.Integer>
maxPerRoute
private int
maxTotal
private java.util.Set<SessionRequest>
pending
private java.util.Map<T,RouteSpecificPool<T,C,E>>
routeToPool
private SessionRequestCallback
sessionRequestCallback
-
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 void
closeExpired()
void
closeIdle(long idletime, java.util.concurrent.TimeUnit timeUnit)
protected abstract E
createEntry(T route, C conn)
protected void
enumAvailable(PoolEntryCallback<T,C> callback)
Enumerates all available connections.protected void
enumEntries(java.util.Iterator<E> it, PoolEntryCallback<T,C> callback)
Deprecated.(4.3.2)protected void
enumLeased(PoolEntryCallback<T,C> callback)
Enumerates all leased connections.private void
fireCallbacks()
int
getDefaultMaxPerRoute()
private int
getMax(T route)
int
getMaxPerRoute(T route)
int
getMaxTotal()
private RouteSpecificPool<T,C,E>
getPool(T route)
java.util.Set<T>
getRoutes()
Returns snapshot of all knows routesPoolStats
getStats(T route)
PoolStats
getTotalStats()
boolean
isShutdown()
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 void
onLease(E entry)
protected void
onRelease(E entry)
protected void
onReuse(E entry)
private void
processNextPendingRequest()
private boolean
processPendingRequest(LeaseRequest<T,C,E> request)
private void
processPendingRequests()
private void
purgePoolMap()
void
release(E entry, boolean reusable)
Releases the pool entry back to the pool.protected void
requestCancelled(SessionRequest request)
protected void
requestCompleted(SessionRequest request)
protected void
requestFailed(SessionRequest request)
protected void
requestTimeout(SessionRequest request)
protected java.net.SocketAddress
resolveLocalAddress(T route)
Deprecated.(4.3) useSocketAddressResolver
protected java.net.SocketAddress
resolveRemoteAddress(T route)
Deprecated.(4.3) useSocketAddressResolver
void
setDefaultMaxPerRoute(int max)
void
setMaxPerRoute(T route, int max)
void
setMaxTotal(int max)
void
shutdown(long waitMs)
java.lang.String
toString()
void
validatePendingRequests()
-
-
-
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:ConnPool
Attempts to lease a connection for the given route and with the given state from the pool.- Specified by:
lease
in 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:ConnPool
Releases 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:
setMaxTotal
in interfaceConnPoolControl<T>
-
getMaxTotal
public int getMaxTotal()
- Specified by:
getMaxTotal
in interfaceConnPoolControl<T>
-
setDefaultMaxPerRoute
public void setDefaultMaxPerRoute(int max)
- Specified by:
setDefaultMaxPerRoute
in interfaceConnPoolControl<T>
-
getDefaultMaxPerRoute
public int getDefaultMaxPerRoute()
- Specified by:
getDefaultMaxPerRoute
in interfaceConnPoolControl<T>
-
setMaxPerRoute
public void setMaxPerRoute(T route, int max)
- Specified by:
setMaxPerRoute
in interfaceConnPoolControl<T>
-
getMaxPerRoute
public int getMaxPerRoute(T route)
- Specified by:
getMaxPerRoute
in interfaceConnPoolControl<T>
-
getTotalStats
public PoolStats getTotalStats()
- Specified by:
getTotalStats
in interfaceConnPoolControl<T>
-
getStats
public PoolStats getStats(T route)
- Specified by:
getStats
in 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:
toString
in classjava.lang.Object
-
-