Class: HTTPClient::SessionManager
- Inherits:
-
Object
- Object
- HTTPClient::SessionManager
- Defined in:
- lib/httpclient/session.rb
Overview
Manages sessions for a HTTPClient instance.
Instance Attribute Summary collapse
-
#agent_name ⇒ Object
Name of this client.
-
#chunk_size ⇒ Object
Chunk size for chunked request.
-
#connect_retry ⇒ Object
Maximum retry count.
-
#connect_timeout ⇒ Object
Returns the value of attribute connect_timeout.
-
#debug_dev ⇒ Object
Device for dumping log for debugging.
-
#from ⇒ Object
Owner of this client.
-
#protocol_retry_count ⇒ Object
Returns the value of attribute protocol_retry_count.
-
#protocol_version ⇒ Object
Requested protocol version.
-
#read_block_size ⇒ Object
Returns the value of attribute read_block_size.
-
#receive_timeout ⇒ Object
Returns the value of attribute receive_timeout.
-
#send_timeout ⇒ Object
Returns the value of attribute send_timeout.
-
#socket_sync ⇒ Object
Boolean value for Socket#sync.
-
#ssl_config ⇒ Object
Returns the value of attribute ssl_config.
-
#test_loopback_http_response ⇒ Object
readonly
Returns the value of attribute test_loopback_http_response.
-
#transparent_gzip_decompression ⇒ Object
Returns the value of attribute transparent_gzip_decompression.
Instance Method Summary collapse
-
#initialize(client) ⇒ SessionManager
constructor
A new instance of SessionManager.
- #invalidate(site) ⇒ Object
- #keep(sess) ⇒ Object
- #proxy=(proxy) ⇒ Object
- #query(req, via_proxy) ⇒ Object
- #reset(uri) ⇒ Object
- #reset_all ⇒ Object
Constructor Details
#initialize(client) ⇒ SessionManager
Returns a new instance of SessionManager.
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/httpclient/session.rb', line 112 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 = 4096 @connect_timeout = 60 @connect_retry = 1 @send_timeout = 120 @receive_timeout = 60 # For each read_block_size bytes @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 @sess_pool = [] @sess_pool_mutex = Mutex.new end |
Instance Attribute Details
#agent_name ⇒ Object
Name of this client. Used for ‘User-Agent’ header in HTTP request.
85 86 87 |
# File 'lib/httpclient/session.rb', line 85 def agent_name @agent_name end |
#chunk_size ⇒ Object
Chunk size for chunked request
92 93 94 |
# File 'lib/httpclient/session.rb', line 92 def chunk_size @chunk_size end |
#connect_retry ⇒ Object
Maximum retry count. 0 for infinite.
100 101 102 |
# File 'lib/httpclient/session.rb', line 100 def connect_retry @connect_retry end |
#connect_timeout ⇒ Object
Returns the value of attribute connect_timeout.
98 99 100 |
# File 'lib/httpclient/session.rb', line 98 def connect_timeout @connect_timeout end |
#debug_dev ⇒ Object
Device for dumping log for debugging
94 95 96 |
# File 'lib/httpclient/session.rb', line 94 def debug_dev @debug_dev end |
#from ⇒ Object
Owner of this client. Used for ‘From’ header in HTTP request.
87 88 89 |
# File 'lib/httpclient/session.rb', line 87 def from @from end |
#protocol_retry_count ⇒ Object
Returns the value of attribute protocol_retry_count.
104 105 106 |
# File 'lib/httpclient/session.rb', line 104 def protocol_retry_count @protocol_retry_count end |
#protocol_version ⇒ Object
Requested protocol version
90 91 92 |
# File 'lib/httpclient/session.rb', line 90 def protocol_version @protocol_version end |
#read_block_size ⇒ Object
Returns the value of attribute read_block_size.
103 104 105 |
# File 'lib/httpclient/session.rb', line 103 def read_block_size @read_block_size end |
#receive_timeout ⇒ Object
Returns the value of attribute receive_timeout.
102 103 104 |
# File 'lib/httpclient/session.rb', line 102 def receive_timeout @receive_timeout end |
#send_timeout ⇒ Object
Returns the value of attribute send_timeout.
101 102 103 |
# File 'lib/httpclient/session.rb', line 101 def send_timeout @send_timeout end |
#socket_sync ⇒ Object
Boolean value for Socket#sync
96 97 98 |
# File 'lib/httpclient/session.rb', line 96 def socket_sync @socket_sync end |
#ssl_config ⇒ Object
Returns the value of attribute ssl_config.
106 107 108 |
# File 'lib/httpclient/session.rb', line 106 def ssl_config @ssl_config end |
#test_loopback_http_response ⇒ Object (readonly)
Returns the value of attribute test_loopback_http_response.
108 109 110 |
# File 'lib/httpclient/session.rb', line 108 def test_loopback_http_response @test_loopback_http_response end |
#transparent_gzip_decompression ⇒ Object
Returns the value of attribute transparent_gzip_decompression.
110 111 112 |
# File 'lib/httpclient/session.rb', line 110 def transparent_gzip_decompression @transparent_gzip_decompression end |
Instance Method Details
#invalidate(site) ⇒ Object
172 173 174 175 176 177 178 179 180 |
# File 'lib/httpclient/session.rb', line 172 def invalidate(site) @sess_pool_mutex.synchronize do @sess_pool.each do |sess| if sess.dest == site sess.invalidate end end end end |
#keep(sess) ⇒ Object
168 169 170 |
# File 'lib/httpclient/session.rb', line 168 def keep(sess) add_cached_session(sess) end |
#proxy=(proxy) ⇒ Object
139 140 141 142 143 144 145 |
# File 'lib/httpclient/session.rb', line 139 def proxy=(proxy) if proxy.nil? @proxy = nil else @proxy = Site.new(proxy) end end |
#query(req, via_proxy) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/httpclient/session.rb', line 147 def query(req, via_proxy) req.body.chunk_size = @chunk_size sess = open(req.header.request_uri, via_proxy) begin sess.query(req) rescue sess.close raise end sess end |
#reset(uri) ⇒ Object
159 160 161 162 |
# File 'lib/httpclient/session.rb', line 159 def reset(uri) site = Site.new(uri) close(site) end |
#reset_all ⇒ Object
164 165 166 |
# File 'lib/httpclient/session.rb', line 164 def reset_all close_all end |