class PackServ::IOUnpacker

Public Class Methods

each_from(io, proto) { |unpack| ... } click to toggle source
# File lib/packserv/io_unpacker.rb, line 4
def each_from(io, proto)
  iou = IOUnpacker.new(io, proto)

  loop do
    frame = iou.get_frame

    break if frame.empty?

    yield(MessagePack.unpack(frame))
  end
end
new(io, proto) click to toggle source
# File lib/packserv/io_unpacker.rb, line 17
def initialize(io, proto)
  @proto = proto
  @io = io
end

Public Instance Methods

get_frame() click to toggle source
# File lib/packserv/io_unpacker.rb, line 22
def get_frame
  @io.read(get_frame_length)
end

Private Instance Methods

get_frame_length() click to toggle source
# File lib/packserv/io_unpacker.rb, line 28
def get_frame_length
  @io.read(@proto::HEADER_LENGTH).then { |g| g.nil? ? '' : g }.to_i(16)
end