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