Base class for MIH TLV parsers. More...
#include <senf/Packets/80221Bundle/TLVParserBase.hh>
Public Types | |
typedef UInt8Parser | type_t |
typedef MIHLengthParser | length_t |
typedef GenericTLVParserRegistry< MIHBaseTLVParser > | Registry |
Public Types inherited from senf::PacketParserBase | |
typedef detail::packet::iterator | data_iterator |
Raw data iterator type. More... | |
typedef detail::packet::size_type | size_type |
Unsigned integral type. More... | |
typedef detail::packet::difference_type | difference_type |
Signed integral type. More... | |
typedef detail::packet::byte | byte |
Unsigned 8bit value, the raw value type. More... | |
typedef PacketData * | state_type |
Type of the 'state' parameter. More... | |
typedef PacketParserBase | parser_base_type |
Base type of the next parser. More... | |
Public Member Functions | |
UInt8Parser | type () const |
MIHLengthParser ::value_type | length () const |
void | finalize () |
shrink size of the TLV length field to minimum More... | |
Public Member Functions inherited from senf::PacketParserBase | |
data_iterator | i () const |
Return beginning of data to parse. More... | |
data_iterator | i (size_type offset) const |
Return iterator offset bytes from the start. More... | |
state_type | state () const |
Return state of this parser. More... | |
PacketData & | data () const |
Access the packets raw data container. More... | |
void | init () const |
Default implementation. More... | |
Protected Member Functions | |
MIHLengthParser | length_ () const |
void | maxLength (MIHLengthParser::value_type maxl) const |
set maximum value of TLV length field More... | |
void | validateType (boost::uint8_t type) const |
void | validateTypeLength (boost::uint8_t type, MIHLengthParser::value_type length) const |
Protected Member Functions inherited from senf::PacketParserBase | |
ParserProtector | protect () const |
PacketParserBase (data_iterator i, state_type s) | |
Standard constructor. More... | |
PacketParserBase (data_iterator i, state_type s, size_type size) | |
Size checking constructor. More... | |
bool | check (size_type size) const |
Check size of data container. More... | |
void | validate (size_type size) const |
Validate size of data container. More... | |
template<class Parser > | |
Parser | parse (data_iterator i) const |
Create sub-parser. More... | |
template<class Parser , class Arg > | |
Parser | parse (Arg const &arg, data_iterator i) const |
Create sub-parser. More... | |
template<class Parser > | |
Parser | parse (size_type n) const |
Create sub-parser. More... | |
template<class Parser , class Arg > | |
Parser | parse (Arg const &arg, size_type n) const |
Create sub-parser. More... | |
void | defaultInit () const |
Default implementation. More... | |
Packet | packet () const |
Get packet this parser is parsing from. More... | |
void | resize (size_type oldSize, size_type newSize) |
Resize data container. More... | |
Base class for MIH TLV parsers.
MIHBaseTLVParser is the abstract base class for MIH TLV parsers. It defines the type() field as an senf::UInt8Parser and the length() field as a MIHLengthParser. The length field is read-only.
To create your own TLVParser
you have to inherit from MIHBaseTLVParser (don't forget SENF_PARSER_INHERIT) and define the value
field. In the following example the value is a vector of MacAddresses:
You have to adjust the maximum length value with the \ref maxLength function before the length value is set. The default maximum value is 128. So, in the above example adding more than 21 MACAddresses to the vector will throw a TLVLengthException if you don't call \c maxLength( \e some_value) before. \see MIHLengthParser \n MIHGenericTLVParser \n
Definition at line 94 of file TLVParserBase.hh.
Definition at line 99 of file TLVParserBase.hh.
Definition at line 109 of file TLVParserBase.hh.
Definition at line 98 of file TLVParserBase.hh.
void senf::MIHBaseTLVParser::finalize | ( | ) |
shrink size of the TLV length field to minimum
The size of the length field will be decreased to minimum necessary to hold the current length value.
MIHLengthParser ::value_type senf::MIHBaseTLVParser::length | ( | ) | const |
|
protected |
|
protected |
set maximum value of TLV length field
The size of the length field will be increased if necessary.
v | maximum value of length field |
UInt8Parser senf::MIHBaseTLVParser::type | ( | ) | const |
|
protected |
Definition at line 28 of file TLVParserBase.cc.
|
protected |
Definition at line 39 of file TLVParserBase.cc.