Class: Codec::Tagged
- Inherits:
-
Base
- Object
- Base
- Codec::Tagged
show all
- Defined in:
- lib/codec/prefix.rb
Instance Attribute Summary
Attributes inherited from Base
#id
Instance Method Summary
collapse
Methods inherited from Base
#add_sub_codec, #build_field, #decode_with_length, #encode_with_length, #eval_length, #get_length, #get_sub_codecs
Constructor Details
#initialize(id, tag_codec) ⇒ Tagged
107
108
109
110
111
|
# File 'lib/codec/prefix.rb', line 107
def initialize(id,tag_codec)
@subCodecs = {}
@tag_codec = tag_codec
@id = id
end
|
Instance Method Details
#decode(buffer) ⇒ Object
113
114
115
116
117
118
119
120
121
|
# File 'lib/codec/prefix.rb', line 113
def decode(buffer)
tag,buf = @tag_codec.decode(buffer)
if @subCodecs[tag.get_value.to_s].nil?
raise ParsingException.new "Unknown tag #{tag.get_value.to_s} for #{@id} decoder"
end
f,buf = @subCodecs[tag.get_value.to_s].decode(buf)
f.set_id(tag.get_value.to_s)
return f,buf
end
|
#encode(field) ⇒ Object
123
124
125
126
127
128
129
130
131
|
# File 'lib/codec/prefix.rb', line 123
def encode(field)
head = Field.new(@tag_codec.id, field.get_id)
out = @tag_codec.encode(head)
if @subCodecs[field.get_id].nil?
raise EncodingException.new "Unknown tag #{field.get_id} for #{@id} encoder"
end
out += @subCodecs[field.get_id].encode(field)
return out
end
|