Class: HTTPClient::SessionManager

Inherits:
Object
  • Object
show all
Defined in:
lib/httpclient/session.rb

Overview

Manages sessions for a HTTPClient instance.

Instance Attribute Summary collapse

Instance Method Summary collapse

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_nameObject

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_sizeObject

Chunk size for chunked request



92
93
94
# File 'lib/httpclient/session.rb', line 92

def chunk_size
  @chunk_size
end

#connect_retryObject

Maximum retry count. 0 for infinite.



100
101
102
# File 'lib/httpclient/session.rb', line 100

def connect_retry
  @connect_retry
end

#connect_timeoutObject

Returns the value of attribute connect_timeout.



98
99
100
# File 'lib/httpclient/session.rb', line 98

def connect_timeout
  @connect_timeout
end

#debug_devObject

Device for dumping log for debugging



94
95
96
# File 'lib/httpclient/session.rb', line 94

def debug_dev
  @debug_dev
end

#fromObject

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_countObject

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_versionObject

Requested protocol version



90
91
92
# File 'lib/httpclient/session.rb', line 90

def protocol_version
  @protocol_version
end

#read_block_sizeObject

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_timeoutObject

Returns the value of attribute receive_timeout.



102
103
104
# File 'lib/httpclient/session.rb', line 102

def receive_timeout
  @receive_timeout
end

#send_timeoutObject

Returns the value of attribute send_timeout.



101
102
103
# File 'lib/httpclient/session.rb', line 101

def send_timeout
  @send_timeout
end

#socket_syncObject

Boolean value for Socket#sync



96
97
98
# File 'lib/httpclient/session.rb', line 96

def socket_sync
  @socket_sync
end

#ssl_configObject

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_responseObject (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_decompressionObject

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_allObject



164
165
166
# File 'lib/httpclient/session.rb', line 164

def reset_all
  close_all
end