class Slipstream::Stream

Attributes

buffer_size[RW]
clean[RW]

Public Class Methods

new(**options) click to toggle source
# File lib/slipstream.rb, line 12
def initialize(**options)
  if options[:id].nil?
    @id = SecureRandom.uuid 
  else
    @id = options[:id]
  end
  if options[:buffer_size].nil?
    @buffer_size = 1
  else
    @buffer_size = options[:buffer_size]
  end
  @clean = true if options[:clean]
  @reader, @writer = IO.pipe
end

Public Instance Methods

clean!() click to toggle source
# File lib/slipstream.rb, line 52
def clean!
  @clean = true
end
clean?() click to toggle source
# File lib/slipstream.rb, line 56
def clean?
  return true if @clean
  false
end
close!() click to toggle source
# File lib/slipstream.rb, line 65
def close!
  @writer.close 
  @reader.close 
  return true
end
id() click to toggle source
# File lib/slipstream.rb, line 41
def id
  @id
end
read(clean: clean?) click to toggle source
# File lib/slipstream.rb, line 27
def read(clean: clean?)
  buffer = ""
  buffer << @reader.read_nonblock(@buffer_size) while buffer[-1] != "\n"
  if @clean
    return buffer.strip
  else
    return buffer
  end
rescue IO::EAGAINWaitReadable
  return nil 
rescue IOError
  return false
end
unclean!() click to toggle source
# File lib/slipstream.rb, line 61
def unclean!
  @clean = false
end
write(mesg) click to toggle source
# File lib/slipstream.rb, line 45
def write(mesg)
  @writer.puts mesg
  return true
rescue IOError
  return false
end