Class: Gem::Request::HTTPPool
Do not use. This class is for internal use only.
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
|
Subclasses:
|
|
| Inherits: | Object |
| Defined in: | lib/rubygems/request/http_pool.rb |
Overview
Class Method Summary
Instance Attribute Summary
- #cert_files readonly
- #proxy_uri readonly
Instance Method Summary
- #checkin(connection)
- #checkout
- #close_all
- #make_connection private
- #setup_connection(connection) private
- #setup_queue private
Constructor Details
.new(http_args, cert_files, proxy_uri, pool_size) ⇒ HTTPPool
# File 'lib/rubygems/request/http_pool.rb', line 12
def initialize(http_args, cert_files, proxy_uri, pool_size) @http_args = http_args @cert_files = cert_files @proxy_uri = proxy_uri @pool_size = pool_size @queue = Thread::SizedQueue.new @pool_size setup_queue end
Instance Attribute Details
#cert_files (readonly)
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 10
attr_reader :cert_files, :proxy_uri
#proxy_uri (readonly)
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 10
attr_reader :cert_files, :proxy_uri
Instance Method Details
#checkin(connection)
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 26
def checkin(connection) @queue.push connection end
#checkout
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 22
def checkout @queue.pop || make_connection end
#close_all
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 30
def close_all until @queue.empty? if (connection = @queue.pop(true)) && connection.started? connection.finish end end setup_queue end
#make_connection (private)
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 42
def make_connection setup_connection Gem::Request::ConnectionPools.client.new(*@http_args) end
#setup_connection(connection) (private)
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 46
def setup_connection(connection) connection.start connection end
#setup_queue (private)
[ GitHub ]# File 'lib/rubygems/request/http_pool.rb', line 51
def setup_queue @pool_size.times { @queue.push(nil) } end