Base class for MIH TLV parsers. More...

#include <senf/Packets/80221Bundle/TLVParserBase.hh>

Inheritance diagram for senf::MIHBaseTLVParser:

Public Types

typedef UInt8Parser type_t
 
typedef MIHLengthParser length_t
 
typedef GenericTLVParserRegistry< MIHBaseTLVParserRegistry
 
- 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 PacketDatastate_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...
 
PacketDatadata () 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...
 

Detailed Description

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:

struct MacAddressesTLVParser : public MIHBaseTLVParser {
# include SENF_PARSER()
SENF_PARSER_INHERIT ( MIHBaseTLVParser );
SENF_PARSER_FINALIZE( MacAddressesTLVParser );
};
     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.

Member Typedef Documentation

◆ length_t

◆ Registry

◆ type_t

Definition at line 98 of file TLVParserBase.hh.

Member Function Documentation

◆ finalize()

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.

◆ length()

MIHLengthParser ::value_type senf::MIHBaseTLVParser::length ( ) const

◆ length_()

MIHLengthParser senf::MIHBaseTLVParser::length_ ( ) const
protected

◆ maxLength()

void senf::MIHBaseTLVParser::maxLength ( MIHLengthParser::value_type  maxl) const
protected

set maximum value of TLV length field

The size of the length field will be increased if necessary.

Parameters
vmaximum value of length field

◆ type()

UInt8Parser senf::MIHBaseTLVParser::type ( ) const

◆ validateType()

void senf::MIHBaseTLVParser::validateType ( boost::uint8_t  type) const
protected

Definition at line 28 of file TLVParserBase.cc.

◆ validateTypeLength()

void senf::MIHBaseTLVParser::validateTypeLength ( boost::uint8_t  type,
MIHLengthParser::value_type  length 
) const
protected

Definition at line 39 of file TLVParserBase.cc.


The documentation for this class was generated from the following files: