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

  • Type Parameters:
    T - route
    C - connection object
    All Implemented Interfaces:
    java.io.Closeable, java.lang.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 java.lang.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 Detail

      • 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 java.util.concurrent.ConcurrentMap<T,​H2SharingConnPool.PerRoutePool<T,​C extends org.apache.hc.core5.http.HttpConnection>> perRouteCache
      • closed

        private final java.util.concurrent.atomic.AtomicBoolean closed
    • Constructor Detail

      • H2SharingConnPool

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

      • 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 java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • lease

        public java.util.concurrent.Future<org.apache.hc.core5.pool.PoolEntry<T,​C>> lease​(T route,
                                                                                                java.lang.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 java.util.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 java.lang.String toString()
        Overrides:
        toString in class java.lang.Object