Manages sessions for a HTTPClient instance.
Name of this client. Used for ‘User-Agent’ header in HTTP request.
Chunk size for chunked request
Maximum retry count. 0 for infinite.
Device for dumping log for debugging
Owner of this client. Used for ‘From’ header in HTTP request.
Requested protocol version
Local address to bind local side of the socket to
Boolean value for Socket#sync
# File lib/httpclient/session.rb, line 120 def initialize(client) @client = client @proxy = client.proxy @agent_name = nil @from = nil @protocol_version = nil @debug_dev = client.debug_dev @socket_sync = true @chunk_size = ::HTTP::Message::Body::DEFAULT_CHUNK_SIZE @connect_timeout = 60 @connect_retry = 1 @send_timeout = 120 @receive_timeout = 60 # For each read_block_size bytes @keep_alive_timeout = 15 # '15' is from Apache 2 default @read_block_size = 1024 * 16 # follows net/http change in 1.8.7 @protocol_retry_count = 5 @ssl_config = nil @test_loopback_http_response = [] @transparent_gzip_decompression = false @socket_local = Site.new @sess_pool = {} @sess_pool_mutex = Mutex.new @sess_pool_last_checked = Time.now end
# File lib/httpclient/session.rb, line 185 def invalidate(site) @sess_pool_mutex.synchronize do if pool = @sess_pool[site] pool.each do |sess| sess.invalidate end end end end
assert: sess.last_used must not be nil
# File lib/httpclient/session.rb, line 181 def keep(sess) add_cached_session(sess) end
# File lib/httpclient/session.rb, line 151 def proxy=(proxy) if proxy.nil? @proxy = nil else @proxy = Site.new(proxy) end end
# File lib/httpclient/session.rb, line 159 def query(req, via_proxy) req.http_body.chunk_size = @chunk_size sess = open(req.header.request_uri, via_proxy) begin sess.query(req) rescue sess.close raise end sess end
# File lib/httpclient/session.rb, line 171 def reset(uri) site = Site.new(uri) close(site) end
# File lib/httpclient/session.rb, line 176 def reset_all close_all end