@Contract(threading=SAFE_CONDITIONAL) public class PoolingAsyncClientConnectionManager extends Object implements AsyncClientConnectionManager, ConnPoolControl<HttpRoute>
PoolingAsyncClientConnectionManager maintains a pool of non-blocking
 HttpConnections and is able to service
 connection requests from multiple execution threads. Connections are pooled
 on a per route basis. A request for a route which already the manager has
 persistent connections for available in the pool will be services by leasing
 a connection from the pool rather than creating a new connection.
 
 PoolingAsyncClientConnectionManager maintains a maximum limit
 of connection on a per route basis and in total. Connection limits
 can be adjusted using ConnPoolControl methods.
 
Total time to live (TTL) set at construction time defines maximum life span of persistent connections regardless of their expiration setting. No persistent connection will be re-used past its TTL value.
| Modifier and Type | Field and Description | 
|---|---|
| static int | DEFAULT_MAX_CONNECTIONS_PER_ROUTE | 
| static int | DEFAULT_MAX_TOTAL_CONNECTIONS | 
| Modifier and Type | Method and Description | 
|---|---|
| void | close()Closes this stream and releases any system resources associated with it. | 
| void | close(CloseMode closeMode)Closes this process or endpoint and releases any system resources associated
 with it. | 
| void | closeExpired() | 
| void | closeIdle(TimeValue idletime) | 
| Future<AsyncConnectionEndpoint> | connect(AsyncConnectionEndpoint endpoint,
       ConnectionInitiator connectionInitiator,
       Timeout connectTimeout,
       Object attachment,
       HttpContext context,
       FutureCallback<AsyncConnectionEndpoint> callback)Connects the endpoint to the initial hop (connection target in case
 of a direct route or to the first proxy hop in case of a route via a proxy
 or multiple proxies). | 
| int | getDefaultMaxPerRoute() | 
| int | getMaxPerRoute(HttpRoute route) | 
| int | getMaxTotal() | 
| Set<HttpRoute> | getRoutes() | 
| PoolStats | getStats(HttpRoute route) | 
| PoolStats | getTotalStats() | 
| TimeValue | getValidateAfterInactivity() | 
| Future<AsyncConnectionEndpoint> | lease(String id,
     HttpRoute route,
     Object state,
     Timeout requestTimeout,
     FutureCallback<AsyncConnectionEndpoint> callback)Returns a  Futureobject which can be used to obtain
 anAsyncConnectionEndpointor to cancel the request by callingFuture.cancel(boolean). | 
| void | release(AsyncConnectionEndpoint endpoint,
       Object state,
       TimeValue keepAlive)Releases the endpoint back to the manager making it potentially
 re-usable by other consumers. | 
| void | setDefaultMaxPerRoute(int max) | 
| void | setMaxPerRoute(HttpRoute route,
              int max) | 
| void | setMaxTotal(int max) | 
| void | setValidateAfterInactivity(TimeValue validateAfterInactivity)Defines period of inactivity after which persistent connections must
 be re-validated prior to being  lease(String, HttpRoute, Object, Timeout,
 FutureCallback)leased} to the consumer. | 
| void | upgrade(AsyncConnectionEndpoint endpoint,
       Object attachment,
       HttpContext context)Upgrades transport security of the given endpoint by using the TLS security protocol. | 
public static final int DEFAULT_MAX_CONNECTIONS_PER_ROUTE
public static final int DEFAULT_MAX_TOTAL_CONNECTIONS
public PoolingAsyncClientConnectionManager()
@Internal protected PoolingAsyncClientConnectionManager(AsyncClientConnectionOperator connectionOperator, PoolConcurrencyPolicy poolConcurrencyPolicy, PoolReusePolicy poolReusePolicy, TimeValue timeToLive)
public PoolingAsyncClientConnectionManager(Lookup<TlsStrategy> tlsStrategyLookup)
public PoolingAsyncClientConnectionManager(Lookup<TlsStrategy> tlsStrategyLookup, PoolConcurrencyPolicy poolConcurrencyPolicy, PoolReusePolicy poolReusePolicy, TimeValue timeToLive)
public PoolingAsyncClientConnectionManager(Lookup<TlsStrategy> tlsStrategyLookup, PoolConcurrencyPolicy poolConcurrencyPolicy, PoolReusePolicy poolReusePolicy, TimeValue timeToLive, SchemePortResolver schemePortResolver, DnsResolver dnsResolver)
public PoolingAsyncClientConnectionManager(Lookup<TlsStrategy> tlsStrategyLookup, PoolConcurrencyPolicy poolConcurrencyPolicy, TimeValue timeToLive)
@Internal protected PoolingAsyncClientConnectionManager(ManagedConnPool<HttpRoute,ManagedAsyncClientConnection> pool, AsyncClientConnectionOperator connectionOperator)
public void close()
Closeableclose in interface Closeableclose in interface AutoCloseablepublic void close(CloseMode closeMode)
ModalCloseableclose in interface ModalCloseablecloseMode - How to close the receiver.public void closeExpired()
closeExpired in interface ConnPoolControl<HttpRoute>public void closeIdle(TimeValue idletime)
closeIdle in interface ConnPoolControl<HttpRoute>public Future<AsyncConnectionEndpoint> connect(AsyncConnectionEndpoint endpoint, ConnectionInitiator connectionInitiator, Timeout connectTimeout, Object attachment, HttpContext context, FutureCallback<AsyncConnectionEndpoint> callback)
AsyncClientConnectionManagerconnect in interface AsyncClientConnectionManagerendpoint - the managed endpoint.connectTimeout - connect timeout.attachment - connect request attachment.context - the actual HTTP context.callback - result callback.public int getDefaultMaxPerRoute()
getDefaultMaxPerRoute in interface ConnPoolControl<HttpRoute>public int getMaxPerRoute(HttpRoute route)
getMaxPerRoute in interface ConnPoolControl<HttpRoute>public int getMaxTotal()
getMaxTotal in interface ConnPoolControl<HttpRoute>public Set<HttpRoute> getRoutes()
getRoutes in interface ConnPoolControl<HttpRoute>public PoolStats getStats(HttpRoute route)
getStats in interface ConnPoolStats<HttpRoute>public PoolStats getTotalStats()
getTotalStats in interface ConnPoolStats<HttpRoute>public TimeValue getValidateAfterInactivity()
public Future<AsyncConnectionEndpoint> lease(String id, HttpRoute route, Object state, Timeout requestTimeout, FutureCallback<AsyncConnectionEndpoint> callback)
AsyncClientConnectionManagerFuture object which can be used to obtain
 an AsyncConnectionEndpoint or to cancel the request by calling
 Future.cancel(boolean).
 
 Please note that newly allocated endpoints can be leased
 disconnected. The consumer
 of the endpoint is responsible for fully establishing the route to
 the endpoint target by calling AsyncClientConnectionManager.connect(AsyncConnectionEndpoint,
 ConnectionInitiator, Timeout, Object, HttpContext, FutureCallback)
 in order to connect directly to the target or to the first proxy hop,
 and optionally calling AsyncClientConnectionManager.upgrade(AsyncConnectionEndpoint, Object, HttpContext)
 method to upgrade the underlying transport to Transport Layer Security
 after having executed a CONNECT method to all intermediate
 proxy hops.
lease in interface AsyncClientConnectionManagerid - unique operation ID or null.route - HTTP route of the requested connection.state - expected state of the connection or null
              if the connection is not expected to carry any state.requestTimeout - lease request timeout.callback - result callback.public void release(AsyncConnectionEndpoint endpoint, Object state, TimeValue keepAlive)
AsyncClientConnectionManagervalidDuration and timeUnit
 parameters.release in interface AsyncClientConnectionManagerendpoint - the managed endpoint.state - the new connection state of null if state-less.keepAlive - the duration of time this connection is valid for reuse.public void setDefaultMaxPerRoute(int max)
setDefaultMaxPerRoute in interface ConnPoolControl<HttpRoute>public void setMaxPerRoute(HttpRoute route, int max)
setMaxPerRoute in interface ConnPoolControl<HttpRoute>public void setMaxTotal(int max)
setMaxTotal in interface ConnPoolControl<HttpRoute>public void setValidateAfterInactivity(TimeValue validateAfterInactivity)
lease(String, HttpRoute, Object, Timeout,
 FutureCallback) leased} to the consumer. Non-positive value passed
 to this method disables connection validation. This check helps detect connections
 that have become stale (half-closed) while kept inactive in the pool.public void upgrade(AsyncConnectionEndpoint endpoint, Object attachment, HttpContext context)
AsyncClientConnectionManagerupgrade in interface AsyncClientConnectionManagerendpoint - the managed endpoint.attachment - the attachment the upgrade attachment object.context - the actual HTTP context.