Class AbstractConnectionPool

    • Field Detail

      • LOG

        private static final Logger LOG
      • connections

        private final AtomicBiInteger connections
        The connectionCount encodes both the total connections plus the pending connection counts, so both can be atomically changed. The bottom 32 bits represent the total connections and the top 32 bits represent the pending connections.
      • closed

        private final java.util.concurrent.atomic.AtomicBoolean closed
      • maxConnections

        private final int maxConnections
      • requester

        private final Callback requester
    • Constructor Detail

      • AbstractConnectionPool

        @Deprecated
        protected AbstractConnectionPool​(Destination destination,
                                         int maxConnections,
                                         Callback requester)
        Parameters:
        destination - the correspondent destination
        maxConnections - the max number of connections
        requester - the callback to notify about new connection creation/failure
      • AbstractConnectionPool

        protected AbstractConnectionPool​(HttpDestination destination,
                                         int maxConnections,
                                         Callback requester)
    • Method Detail

      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface ConnectionPool
        Returns:
        whether this ConnectionPool has no open connections
      • acquire

        public Connection acquire()
        Description copied from interface: ConnectionPool

        Returns an idle connection, if available, or schedules the opening of a new connection and returns null.

        Specified by:
        acquire in interface ConnectionPool
        Returns:
        an available connection, or null
      • acquire

        protected Connection acquire​(boolean create)

        Returns an idle connection, if available; if an idle connection is not available, and the given create parameter is true, then schedules the opening of a new connection, if possible within the configuration of this connection pool (for example, if it does not exceed the max connection count); otherwise returns null.

        Parameters:
        create - whether to schedule the opening of a connection if no idle connections are available
        Returns:
        an idle connection or null if no idle connections are available
        See Also:
        tryCreate(int)
      • tryCreate

        protected void tryCreate​(int maxPending)

        Schedules the opening of a new connection.

        Whether a new connection is scheduled for opening is determined by the maxPending parameter: if maxPending is greater than the current number of connections scheduled for opening, then this method returns without scheduling the opening of a new connection; if maxPending is negative, a new connection is always scheduled for opening.

        Parameters:
        maxPending - the max desired number of connections scheduled for opening, or a negative number to always trigger the opening of a new connection
      • onCreated

        protected abstract void onCreated​(Connection connection)
      • proceed

        protected void proceed()
      • activate

        protected abstract Connection activate()
      • acquired

        protected void acquired​(Connection connection)
      • idle

        protected boolean idle​(Connection connection,
                               boolean close)
      • released

        protected void released​(Connection connection)
      • removed

        protected void removed​(Connection connection)
      • close

        public void close()
        Description copied from interface: ConnectionPool
        Closes this ConnectionPool.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface ConnectionPool
        See Also:
        ConnectionPool.isClosed()
      • close

        protected void close​(java.util.Collection<Connection> connections)
      • dump

        public java.lang.String dump()
        Specified by:
        dump in interface Dumpable