module Slowproxy::SlowBufferedIO

Constants

BUFSIZE

Public Class Methods

bps() click to toggle source
# File lib/slowproxy/slow_buffered_io.rb, line 11
def self.bps
  @bps ||= 128 * 1024
end
bps=(bps) click to toggle source
# File lib/slowproxy/slow_buffered_io.rb, line 6
def self.bps=(bps)
  @bps = bps
  @wait = nil
end
logger() click to toggle source
# File lib/slowproxy/slow_buffered_io.rb, line 19
def self.logger
  @logger
end
logger=(logger) click to toggle source
# File lib/slowproxy/slow_buffered_io.rb, line 15
def self.logger=(logger)
  @logger = logger
end
wait() click to toggle source
# File lib/slowproxy/slow_buffered_io.rb, line 23
def self.wait
  @wait ||= 1 / ((bps / 8.0) / BUFSIZE)
end

Public Instance Methods

logger() click to toggle source
# File lib/slowproxy/slow_buffered_io.rb, line 47
def logger
  SlowBufferedIO.logger
end
rbuf_fill() click to toggle source
Calls superclass method
# 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) click to toggle source
Calls superclass method
# 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