add client_header_buffer_size tuning parameter
[rainbows.git] / lib / rainbows / client.rb
blob4608f5374d263aad12b1e793baab1be418029d4d
1 # -*- encoding: binary -*-
2 # :enddoc:
3 require "io/wait"
5 # this class is used for most synchronous concurrency models
6 class Rainbows::Client < Kgio::Socket
7   include Rainbows::ProcessClient
9   def read_expire
10     Time.now + Rainbows.keepalive_timeout
11   end
13   def kgio_wait_readable
14     wait Rainbows.keepalive_timeout
15   end
17   # used for reading headers (respecting keepalive_timeout)
18   def timed_read(buf)
19     expire = nil
20     begin
21       case rv = kgio_tryread(HBUFSIZ, buf)
22       when :wait_readable
23         return if expire && expire < Time.now
24         expire ||= read_expire
25         kgio_wait_readable
26       else
27         return rv
28       end
29     end while true
30   end
31 end