Method: Codec::Bertlv#encode

Defined in:
lib/codec/tlv.rb

#encode(field) ⇒ Object



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/codec/tlv.rb', line 163

def encode(field)
  out = ""
  subfields = field.get_value
  unless subfields.kind_of?(Array)
    raise EncodingException, "Invalid field #{field.to_yaml} for BER Tlv encoding"
  end
  
  while subfields.size > 0
    subfield = subfields.shift
    out += tag_encode(subfield.get_id)
    # TODO : Handle value that is not String
    value = value_encode(subfield.get_value)
    out += length_encode(value.length)
    out += value
  end
  return out
end