Class H2SharingConnPool<T, C extends org.apache.hc.core5.http.HttpConnection>

java.lang.Object
org.apache.hc.client5.http.impl.nio.H2SharingConnPool<T,C>
Type Parameters:
T - route
C - connection object
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.hc.core5.io.ModalCloseable, org.apache.hc.core5.pool.ConnPool<T,C>, org.apache.hc.core5.pool.ConnPoolControl<T>, org.apache.hc.core5.pool.ConnPoolStats<T>, org.apache.hc.core5.pool.ManagedConnPool<T,C>

@Contract(threading=SAFE) @Experimental public class H2SharingConnPool<T, C extends org.apache.hc.core5.http.HttpConnection> extends Object implements org.apache.hc.core5.pool.ManagedConnPool<T,C>
Experimental connections pool implementation that acts as a caching facade in front of a standard ManagedConnPool and shares already leased connections to multiplex message exchanges over active HTTP/2 connections.
Since:
5.5
  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
    • pool

      private final org.apache.hc.core5.pool.ManagedConnPool<T, C extends org.apache.hc.core5.http.HttpConnection> pool
    • perRouteCache

      private final ConcurrentMap<T, H2SharingConnPool.PerRoutePool<T, C extends org.apache.hc.core5.http.HttpConnection>> perRouteCache
    • closed

      private final AtomicBoolean closed
  • Constructor Details

    • H2SharingConnPool

      public H2SharingConnPool(org.apache.hc.core5.pool.ManagedConnPool<T,C> pool)
  • Method Details

    • close

      public void close(org.apache.hc.core5.io.CloseMode closeMode)
      Specified by:
      close in interface org.apache.hc.core5.io.ModalCloseable
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • getPerRoutePool

      H2SharingConnPool.PerRoutePool<T,C> getPerRoutePool(T route)
    • lease

      public Future<org.apache.hc.core5.pool.PoolEntry<T,C>> lease(T route, Object state, org.apache.hc.core5.util.Timeout requestTimeout, org.apache.hc.core5.concurrent.FutureCallback<org.apache.hc.core5.pool.PoolEntry<T,C>> callback)
      Specified by:
      lease in interface org.apache.hc.core5.pool.ConnPool<T, C extends org.apache.hc.core5.http.HttpConnection>
    • release

      public void release(org.apache.hc.core5.pool.PoolEntry<T,C> entry, boolean reusable)
      Specified by:
      release in interface org.apache.hc.core5.pool.ConnPool<T, C extends org.apache.hc.core5.http.HttpConnection>
    • setMaxTotal

      public void setMaxTotal(int max)
      Specified by:
      setMaxTotal in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • getMaxTotal

      public int getMaxTotal()
      Specified by:
      getMaxTotal in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • setDefaultMaxPerRoute

      public void setDefaultMaxPerRoute(int max)
      Specified by:
      setDefaultMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • getDefaultMaxPerRoute

      public int getDefaultMaxPerRoute()
      Specified by:
      getDefaultMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • setMaxPerRoute

      public void setMaxPerRoute(T route, int max)
      Specified by:
      setMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • getMaxPerRoute

      public int getMaxPerRoute(T route)
      Specified by:
      getMaxPerRoute in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • closeIdle

      public void closeIdle(org.apache.hc.core5.util.TimeValue idleTime)
      Specified by:
      closeIdle in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • closeExpired

      public void closeExpired()
      Specified by:
      closeExpired in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • getRoutes

      public Set<T> getRoutes()
      Specified by:
      getRoutes in interface org.apache.hc.core5.pool.ConnPoolControl<T>
    • getTotalStats

      public org.apache.hc.core5.pool.PoolStats getTotalStats()
      Specified by:
      getTotalStats in interface org.apache.hc.core5.pool.ConnPoolStats<T>
    • getStats

      public org.apache.hc.core5.pool.PoolStats getStats(T route)
      Specified by:
      getStats in interface org.apache.hc.core5.pool.ConnPoolStats<T>
    • toString

      public String toString()
      Overrides:
      toString in class Object