Module: ProtobufJavaHelpers::EncodeDecode

Includes:
Varinter
Defined in:
lib/protobuf_java_helpers.rb

Instance Method Summary collapse

Instance Method Details

#decode(stream) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/protobuf_java_helpers.rb', line 28

def decode(stream)
  value = index = 0
  begin
    byte = stream.readbyte
    value |= (byte & 0x7f) << (7 * index)
    index += 1
  end while (byte & 0x80).nonzero?
  value
end

#encode(value) ⇒ Object



24
25
26
# File 'lib/protobuf_java_helpers.rb', line 24

def encode(value)
  to_varint(value) || pure_encode(value)
end

#pure_encode(value) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/protobuf_java_helpers.rb', line 15

def pure_encode(value)
  bytes = []
  until value < 128
    bytes << (0x80 | (value & 0x7f))
    value >>= 7
  end
  (bytes << value).pack('C*')
end