Object
Manages sessions for a HTTPClient instance.
# File lib/httpclient/session.rb, line 109 109: def initialize(client) 110: @client = client 111: @proxy = client.proxy 112: 113: @agent_name = nil 114: @from = nil 115: 116: @protocol_version = nil 117: @debug_dev = client.debug_dev 118: @socket_sync = true 119: @chunk_size = 4096 120: 121: @connect_timeout = 60 122: @connect_retry = 1 123: @send_timeout = 120 124: @receive_timeout = 60 # For each read_block_size bytes 125: @read_block_size = 1024 * 16 # follows net/http change in 1.8.7 126: @protocol_retry_count = 5 127: 128: @ssl_config = nil 129: @test_loopback_http_response = [] 130: 131: @sess_pool = [] 132: @sess_pool_mutex = Mutex.new 133: end
# File lib/httpclient/session.rb, line 164 164: def keep(sess) 165: add_cached_session(sess) 166: end
# File lib/httpclient/session.rb, line 135 135: def proxy=(proxy) 136: if proxy.nil? 137: @proxy = nil 138: else 139: @proxy = Site.new(proxy) 140: end 141: end
# File lib/httpclient/session.rb, line 143 143: def query(req, via_proxy) 144: req.body.chunk_size = @chunk_size 145: sess = open(req.header.request_uri, via_proxy) 146: begin 147: sess.query(req) 148: rescue 149: sess.close 150: raise 151: end 152: sess 153: end
# File lib/httpclient/session.rb, line 226 226: def add_cached_session(sess) 227: @sess_pool_mutex.synchronize do 228: @sess_pool << sess 229: end 230: end
# File lib/httpclient/session.rb, line 201 201: def close(dest) 202: if cached = get_cached_session(dest) 203: cached.close 204: true 205: else 206: false 207: end 208: end
# File lib/httpclient/session.rb, line 192 192: def close_all 193: @sess_pool_mutex.synchronize do 194: @sess_pool.each do |sess| 195: sess.close 196: end 197: end 198: @sess_pool.clear 199: end
# File lib/httpclient/session.rb, line 210 210: def get_cached_session(uri) 211: cached = nil 212: @sess_pool_mutex.synchronize do 213: new_pool = [] 214: @sess_pool.each do |s| 215: if s.dest.match(uri) 216: cached = s 217: else 218: new_pool << s 219: end 220: end 221: @sess_pool = new_pool 222: end 223: cached 224: end
# File lib/httpclient/session.rb, line 170 170: def open(uri, via_proxy = false) 171: sess = nil 172: if cached = get_cached_session(uri) 173: sess = cached 174: else 175: sess = Session.new(@client, Site.new(uri), @agent_name, @from) 176: sess.proxy = via_proxy ? @proxy : nil 177: sess.socket_sync = @socket_sync 178: sess.requested_version = @protocol_version if @protocol_version 179: sess.connect_timeout = @connect_timeout 180: sess.connect_retry = @connect_retry 181: sess.send_timeout = @send_timeout 182: sess.receive_timeout = @receive_timeout 183: sess.read_block_size = @read_block_size 184: sess.protocol_retry_count = @protocol_retry_count 185: sess.ssl_config = @ssl_config 186: sess.debug_dev = @debug_dev 187: sess.test_loopback_http_response = @test_loopback_http_response 188: end 189: sess 190: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.