Module: Slowproxy::SlowBufferedIO
- Defined in:
- lib/slowproxy/slow_buffered_io.rb
Constant Summary collapse
- BUFSIZE =
1024 * 16
Net::BufferedIO::BUFSIZE
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.bps ⇒ Object
11 12 13 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 11 def self.bps @bps ||= 128 * 1024 end |
.bps=(bps) ⇒ Object
6 7 8 9 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 6 def self.bps=(bps) @bps = bps @wait = nil end |
.logger ⇒ Object
19 20 21 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 19 def self.logger @logger end |
.logger=(logger) ⇒ Object
15 16 17 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 15 def self.logger=(logger) @logger = logger end |
.wait ⇒ Object
23 24 25 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 23 def self.wait @wait ||= 1 / ((bps / 8.0) / BUFSIZE) end |
Instance Method Details
#logger ⇒ Object
47 48 49 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 47 def logger SlowBufferedIO.logger end |
#rbuf_fill ⇒ Object
27 28 29 30 31 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 27 def rbuf_fill logger.info "wait for read (#{SlowBufferedIO.wait}s)" if logger sleep SlowBufferedIO.wait super end |
#write0(str) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/slowproxy/slow_buffered_io.rb', line 33 def write0(str) if str.bytesize > BUFSIZE logger.info "wait for write (#{str.bytesize * 8.0 / SlowBufferedIO.bps}s)" if logger len = 0 str.each_byte.each_slice(BUFSIZE) do |bytes| len += super(bytes.pack("C*")) sleep SlowBufferedIO.wait end len else super end end |