T
- routeC
- connection objectE
- pool entry@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>
Modifier and Type | Class and Description |
---|---|
(package private) class |
AbstractNIOConnPool.InternalSessionRequestCallback |
Modifier and Type | Field and 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 and 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) |
Modifier and Type | Method and Description |
---|---|
void |
closeExpired() |
void |
closeIdle(long idletime,
java.util.concurrent.TimeUnit tunit) |
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 routes
|
PoolStats |
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,
FutureCallback<E> callback)
Attempts to lease a connection for the given route and with the given
state from the pool.
|
java.util.concurrent.Future<E> |
lease(T route,
java.lang.Object state,
long connectTimeout,
long leaseTimeout,
java.util.concurrent.TimeUnit tunit,
FutureCallback<E> callback) |
java.util.concurrent.Future<E> |
lease(T route,
java.lang.Object state,
long connectTimeout,
java.util.concurrent.TimeUnit tunit,
FutureCallback<E> callback) |
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) use
SocketAddressResolver |
protected java.net.SocketAddress |
resolveRemoteAddress(T route)
Deprecated.
(4.3) use
SocketAddressResolver |
void |
setDefaultMaxPerRoute(int max) |
void |
setMaxPerRoute(T route,
int max) |
void |
setMaxTotal(int max) |
void |
shutdown(long waitMs) |
java.lang.String |
toString() |
void |
validatePendingRequests() |
private final ConnectingIOReactor ioreactor
private final NIOConnFactory<T,C> connFactory
private final SocketAddressResolver<T> addressResolver
private final SessionRequestCallback sessionRequestCallback
private final java.util.Map<T,RouteSpecificPool<T,C,E extends PoolEntry<T,C>>> routeToPool
private final java.util.LinkedList<LeaseRequest<T,C,E extends PoolEntry<T,C>>> leasingRequests
private final java.util.Set<SessionRequest> pending
private final java.util.concurrent.ConcurrentLinkedQueue<LeaseRequest<T,C,E extends PoolEntry<T,C>>> completedRequests
private final java.util.Map<T,java.lang.Integer> maxPerRoute
private final java.util.concurrent.locks.Lock lock
private final java.util.concurrent.atomic.AtomicBoolean isShutDown
private volatile int defaultMaxPerRoute
private volatile int maxTotal
@Deprecated public AbstractNIOConnPool(ConnectingIOReactor ioreactor, NIOConnFactory<T,C> connFactory, int defaultMaxPerRoute, int maxTotal)
public AbstractNIOConnPool(ConnectingIOReactor ioreactor, NIOConnFactory<T,C> connFactory, SocketAddressResolver<T> addressResolver, int defaultMaxPerRoute, int maxTotal)
@Deprecated protected java.net.SocketAddress resolveRemoteAddress(T route)
SocketAddressResolver
@Deprecated protected java.net.SocketAddress resolveLocalAddress(T route)
SocketAddressResolver
protected void onLease(E entry)
protected void onRelease(E entry)
protected void onReuse(E entry)
public boolean isShutdown()
public void shutdown(long waitMs) throws java.io.IOException
java.io.IOException
private RouteSpecificPool<T,C,E> getPool(T route)
public java.util.concurrent.Future<E> lease(T route, java.lang.Object state, long connectTimeout, java.util.concurrent.TimeUnit tunit, FutureCallback<E> callback)
public java.util.concurrent.Future<E> lease(T route, java.lang.Object state, long connectTimeout, long leaseTimeout, java.util.concurrent.TimeUnit tunit, FutureCallback<E> callback)
public java.util.concurrent.Future<E> lease(T route, java.lang.Object state, FutureCallback<E> callback)
ConnPool
lease
in interface ConnPool<T,E extends PoolEntry<T,C>>
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 be null
.callback
- operation completion callback.public void release(E entry, boolean reusable)
ConnPool
private void processPendingRequests()
private void processNextPendingRequest()
private boolean processPendingRequest(LeaseRequest<T,C,E> request)
private void fireCallbacks()
public void validatePendingRequests()
protected void requestCompleted(SessionRequest request)
protected void requestCancelled(SessionRequest request)
protected void requestFailed(SessionRequest request)
protected void requestTimeout(SessionRequest request)
private int getMax(T route)
public void setMaxTotal(int max)
setMaxTotal
in interface ConnPoolControl<T>
public int getMaxTotal()
getMaxTotal
in interface ConnPoolControl<T>
public void setDefaultMaxPerRoute(int max)
setDefaultMaxPerRoute
in interface ConnPoolControl<T>
public int getDefaultMaxPerRoute()
getDefaultMaxPerRoute
in interface ConnPoolControl<T>
public void setMaxPerRoute(T route, int max)
setMaxPerRoute
in interface ConnPoolControl<T>
public int getMaxPerRoute(T route)
getMaxPerRoute
in interface ConnPoolControl<T>
public PoolStats getTotalStats()
getTotalStats
in interface ConnPoolControl<T>
public PoolStats getStats(T route)
getStats
in interface ConnPoolControl<T>
public java.util.Set<T> getRoutes()
protected void enumAvailable(PoolEntryCallback<T,C> callback)
protected void enumLeased(PoolEntryCallback<T,C> callback)
@Deprecated protected void enumEntries(java.util.Iterator<E> it, PoolEntryCallback<T,C> callback)
private void purgePoolMap()
public void closeIdle(long idletime, java.util.concurrent.TimeUnit tunit)
public void closeExpired()
public java.lang.String toString()
toString
in class java.lang.Object