Method: CMF::Varint.deserialize

Defined in:
lib/cmf/varint.rb

.deserialize(io) ⇒ Integer

Deserializes a varint into a integer.

Parameters:

  • io (StringIO)

    The IO stream that will be read from to deserialize.

Returns:

  • (Integer)

    The deserialized integer.

Raises:



35
36
37
38
39
40
41
42
43
# File 'lib/cmf/varint.rb', line 35

def self.deserialize(io)
  result = 0
  io.each_byte do |byte|
    result = (result << 7) | (byte & 0x7F)
    return result if (byte & 0x80) == 0
    result += 1
  end
  raise CMF::MalformedMessageError, "Unexpected end of stream"
end