class NexusSW::LXD::Transport::Mixins::Rest::StdinStub

Attributes

driver[R]

Public Class Methods

new(driver) click to toggle source

return self as an IO (un)like object

# File lib/nexussw/lxd/transport/mixins/rest.rb, line 31
def initialize(driver)
  @driver = driver
end
pipe(driver) click to toggle source

return a real IO object for parity with Local Transport

# File lib/nexussw/lxd/transport/mixins/rest.rb, line 37
def self.pipe(driver)
  NIO::WebSocket::Reactor.start
  reader, writer = IO.pipe
  NIO::WebSocket::Reactor.queue_task do
    iomon = NIO::WebSocket::Reactor.selector.register(reader, :r)
    iomon.value = proc do
      data = read(iomon)
      driver.binary data if data
    end
  end
  writer
end
read(monitor) click to toggle source
# File lib/nexussw/lxd/transport/mixins/rest.rb, line 54
def self.read(monitor)
  monitor.io.read_nonblock(16384)
rescue IO::WaitReadable # rubocop:disable Lint/ShadowedException
  nil
rescue Errno::ECONNRESET, EOFError, IOError
  monitor.close
  nil
end

Public Instance Methods

write(data) click to toggle source
# File lib/nexussw/lxd/transport/mixins/rest.rb, line 50
def write(data)
  driver.binary data
end