Parent

Included Modules

Class Index [+]

Quicksearch

AMQ::Protocol::TableValueDecoder

Public Class Methods

decode_32bit_float(data, offset) click to toggle source
     # File lib/amq/protocol/table_value_decoder.rb, line 120
120:       def self.decode_32bit_float(data, offset)
121:         v = data.slice(offset, 4).unpack(PACK_32BIT_FLOAT).first
122:         offset += 4
123: 
124:         [v, offset]
125:       end
decode_64bit_float(data, offset) click to toggle source
     # File lib/amq/protocol/table_value_decoder.rb, line 128
128:       def self.decode_64bit_float(data, offset)
129:         v = data.slice(offset, 8).unpack(PACK_64BIT_FLOAT).first
130:         offset += 8
131: 
132:         [v, offset]
133:       end
decode_array(data, initial_offset) click to toggle source

API

    # File lib/amq/protocol/table_value_decoder.rb, line 23
23:       def self.decode_array(data, initial_offset)
24:         array_length = data.slice(initial_offset, 4).unpack(PACK_UINT32).first
25: 
26:         ary    = Array.new
27:         offset = initial_offset + 4
28: 
29:         while offset <= (initial_offset + array_length)
30:           type, offset = decode_value_type(data, offset)
31: 
32:           i = case type
33:                  when TYPE_STRING
34:                    v, offset = decode_string(data, offset)
35:                    v
36:                  when TYPE_INTEGER
37:                    v, offset = decode_integer(data, offset)
38:                    v
39:                  when TYPE_DECIMAL
40:                    v, offset = decode_big_decimal(data, offset)
41:                    v
42:                  when TYPE_TIME
43:                    v, offset = decode_time(data, offset)
44:                    v
45:                  when TYPE_HASH
46:                    v, offset = decode_hash(data, offset)
47:                    v
48:                  when TYPE_BOOLEAN
49:                    v, offset = decode_boolean(data, offset)
50:                    v
51:                  when TYPE_SIGNED_8BIT then raise NotImplementedError.new
52:                  when TYPE_SIGNED_16BIT then raise NotImplementedError.new
53:                  when TYPE_SIGNED_64BIT then raise NotImplementedError.new
54:                  when TYPE_32BIT_FLOAT then
55:                    v, offset = decode_32bit_float(data, offset)
56:                    v
57:                  when TYPE_64BIT_FLOAT then
58:                    v, offset = decode_64bit_float(data, offset)
59:                    v
60:                  when TYPE_VOID
61:                    nil
62:                  when TYPE_ARRAY
63:                    v, offset = TableValueDecoder.decode_array(data, offset)
64:                    v
65:                  else
66:                    raise ArgumentError.new("unsupported type: #{type.inspect}")
67:                  end
68: 
69:           ary << i
70:         end
71: 
72: 
73:         [ary, initial_offset + array_length + 4]
74:       end
decode_big_decimal(data, offset) click to toggle source
     # File lib/amq/protocol/table_value_decoder.rb, line 95
 95:       def self.decode_big_decimal(data, offset)
 96:         decimals, raw = data.slice(offset, 5).unpack(PACK_UCHAR_UINT32)
 97:         offset += 5
 98:         v = BigDecimal.new(raw.to_s) * (BigDecimal.new(TEN) ** -decimals)
 99: 
100:         [v, offset]
101:       end
decode_boolean(data, offset) click to toggle source
     # File lib/amq/protocol/table_value_decoder.rb, line 113
113:       def self.decode_boolean(data, offset)
114:         integer = data.slice(offset, 2).unpack(PACK_CHAR).first # 0 or 1
115:         offset += 1
116:         [(integer == 1), offset]
117:       end
decode_hash(data, offset) click to toggle source
     # File lib/amq/protocol/table_value_decoder.rb, line 142
142:       def self.decode_hash(data, offset)
143:         length = data.slice(offset, 4).unpack(PACK_UINT32).first
144:         v = Table.decode(data.slice(offset, length + 4))
145:         offset += 4 + length
146: 
147:         [v, offset]
148:       end
decode_integer(data, offset) click to toggle source
    # File lib/amq/protocol/table_value_decoder.rb, line 87
87:       def self.decode_integer(data, offset)
88:         v = data.slice(offset, 4).unpack(PACK_UINT32).first
89:         offset += 4
90: 
91:         [v, offset]
92:       end
decode_string(data, offset) click to toggle source
    # File lib/amq/protocol/table_value_decoder.rb, line 77
77:       def self.decode_string(data, offset)
78:         length = data.slice(offset, 4).unpack(PACK_UINT32).first
79:         offset += 4
80:         v = data.slice(offset, length)
81:         offset += length
82: 
83:         [v, offset]
84:       end
decode_time(data, offset) click to toggle source
     # File lib/amq/protocol/table_value_decoder.rb, line 104
104:       def self.decode_time(data, offset)
105:         timestamp = data.slice(offset, 8).unpack(PACK_UINT32_X2).last
106:         v = Time.at(timestamp)
107:         offset += 8
108: 
109:         [v, offset]
110:       end
decode_value_type(data, offset) click to toggle source
     # File lib/amq/protocol/table_value_decoder.rb, line 136
136:       def self.decode_value_type(data, offset)
137:         [data.slice(offset, 1), offset + 1]
138:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.