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 121 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 186 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 182 def keep(sess) add_cached_session(sess) end
# File lib/httpclient/session.rb, line 152 def proxy=(proxy) if proxy.nil? @proxy = nil else @proxy = Site.new(proxy) end end
# File lib/httpclient/session.rb, line 160 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 172 def reset(uri) site = Site.new(uri) close(site) end
# File lib/httpclient/session.rb, line 177 def reset_all close_all end