diff --git a/lib/bert/decode.rb b/lib/bert/decode.rb index e1125c7..3c37583 100644 --- a/lib/bert/decode.rb +++ b/lib/bert/decode.rb @@ -12,6 +12,8 @@ module BERT io.set_encoding('binary') if io.respond_to?(:set_encoding) header = io.getbyte case header + when VERSION_3 + V3.new(io).read_any when MAGIC, VERSION_2 new(io).read_any else @@ -19,6 +21,16 @@ module BERT end end + class V3 + def initialize(ins) + @unpacker = MessagePack::Unpacker.new(ins) + end + + def read_any + @unpacker.read + end + end + def initialize(ins) @in = ins @peeked = ""