73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/codec/bitmap.rb', line 73
def decode(buffer)
msg = Field.new(@id)
field_num = 1
fields_list,buf = decodeBitmap(buffer,field_num)
field_num += bitmap_length
while fields_list.length > 0
field_id = fields_list.slice!(0)
field_tag = field_id.to_s
if @num_extended_bitmaps.include?(field_id)
nextFields,buf = decodeBitmap(buf,field_num)
fields_list = fields_list + nextFields
elsif @subCodecs[field_tag].respond_to?(:decode)
Logger.debug "Parsing bitmap field #{field_tag}"
f,buf = @subCodecs[field_tag].decode(buf)
f.set_id(field_tag)
msg.add_sub_field(f)
else
f = Field.new("ERR")
f.set_value(buf.unpack("H*").first)
msg.add_sub_field(f)
raise ParsingException,msg.to_yaml + "\nError unknown field #{field_tag} : "
end
end
return msg,buf
end
|