Sha256: a800c3c998d9091279442ce008d84951bdc5ef08074250881dcd3bc71ac652f8

Contents?: true

Size: 1.41 KB

Versions: 7

Compression:

Stored size: 1.41 KB

Contents

class ProconBypassMan::Bypass
  attr_accessor :gadget, :procon, :monitor
  def initialize(gadget: , procon: , monitor: )
    self.gadget = gadget
    self.procon = procon
    self.monitor = monitor
  end

  # ゆっくりでいい
  def send_gadget_to_procon!
    monitor.record(:start_function)
    input = nil
    begin
      sleep($will_interval_1_6)
      input = self.gadget.read_nonblock(128)
      ProconBypassMan.logger.debug { ">>> #{input.unpack("H*")}" }
    rescue IO::EAGAINWaitReadable
      monitor.record(:eagain_wait_readable_on_read)
      return if $will_terminate_token
      retry
    end

    begin
      self.procon.write_nonblock(input)
    rescue IO::EAGAINWaitReadable
      monitor.record(:eagain_wait_readable_on_write)
      return
    end
    monitor.record(:end_function)
  end

  def send_procon_to_gadget!
    monitor.record(:start_function)
    output = nil
    begin
      sleep($will_interval_0_0_0_5)
      output = self.procon.read_nonblock(128)
      ProconBypassMan.logger.debug { "<<< #{output.unpack("H*")}" }
    rescue IO::EAGAINWaitReadable
      monitor.record(:eagain_wait_readable_on_read)
      return if $will_terminate_token
      retry
    end

    begin
      self.gadget.write_nonblock(ProconBypassMan::Processor.new(output).process)
    rescue IO::EAGAINWaitReadable
      monitor.record(:eagain_wait_readable_on_write)
      return
    end
    monitor.record(:end_function)
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
procon_bypass_man-0.1.8 lib/procon_bypass_man/bypass.rb
procon_bypass_man-0.1.7 lib/procon_bypass_man/bypass.rb
procon_bypass_man-0.1.6 lib/procon_bypass_man/bypass.rb
procon_bypass_man-0.1.5 lib/procon_bypass_man/bypass.rb
procon_bypass_man-0.1.4 lib/procon_bypass_man/bypass.rb
procon_bypass_man-0.1.3 lib/procon_bypass_man/bypass.rb
procon_bypass_man-0.1.2 lib/procon_bypass_man/bypass.rb