lib/amq/protocol/table_value_decoder.rb in amq-protocol-1.1.0 vs lib/amq/protocol/table_value_decoder.rb in amq-protocol-1.2.0

- old
+ new

@@ -19,11 +19,11 @@ # # API # BIG_ENDIAN = ([1].pack("s") == "\x00\x01") - Q = "Q".freeze + Q = "q".freeze def self.decode_array(data, initial_offset) array_length = data.slice(initial_offset, 4).unpack(PACK_UINT32).first @@ -51,15 +51,15 @@ v when TYPE_BOOLEAN v, offset = decode_boolean(data, offset) v when TYPE_SIGNED_8BIT then - # TODO - raise NotImplementedError.new + v, offset = decode_short_short(data, offset) + v when TYPE_SIGNED_16BIT then - # TODO - raise NotImplementedError.new + v, offset = decode_short(data, offset) + v when TYPE_SIGNED_64BIT then v, offset = decode_long(data, offset) v when TYPE_32BIT_FLOAT then v, offset = decode_32bit_float(data, offset) @@ -172,8 +172,21 @@ v = Table.decode(data.slice(offset, length + 4)) offset += 4 + length [v, offset] end # self.decode_hash(data, offset) + + + def self.decode_short_short(data, offset) + v = data.slice(offset, 1).unpack(PACK_SIGNED_8BIT).first + offset += 1 + [v, offset] + end + + def self.decode_short(data, offset) + v = data.slice(offset, 2).unpack(PACK_SIGNED_16BIT).first + offset += 2 + [v, offset] + end end # TableValueDecoder end # Protocol end # AMQ