Vanetza
 
Loading...
Searching...
No Matches
vanetza::asn1::PacketVisitor< T > Class Template Reference

#include <packet_visitor.hpp>

Inheritance diagram for vanetza::asn1::PacketVisitor< T >:

Public Member Functions

std::shared_ptr< const T > operator() (const ChunkPacket &packet)
 
std::shared_ptr< const T > operator() (const CohesivePacket &packet)
 
std::shared_ptr< const T > get_shared_wrapper () const
 
void allow_chunk_deserialization (bool flag)
 
void start_deserialization_at (OsiLayer start)
 

Private Member Functions

void deserialize (const byte_view_range &range)
 

Private Attributes

std::shared_ptr< const T > m_wrapper
 
bool m_deserialize_chunk = true
 
OsiLayer m_start_layer = OsiLayer::Session
 

Detailed Description

template<typename T>
class vanetza::asn1::PacketVisitor< T >

PacketVisitor is a helper to extract the ASN.1 wrapper object from a packet's application layer. This is a generalised version of the implementation found in Artery before.

ChunkPacket's application layer is simply casted for the sake of speed whenever possible. When casting fails, this helper can fall back to deserialization, see allow_chunk_deserialization. Deserialization is the only option for CohesivePacket's application layer.

Parameters
Tis the asn1c_wrapper<> type, e.g. Cam or Denm

Definition at line 29 of file packet_visitor.hpp.

Member Function Documentation

◆ allow_chunk_deserialization()

template<typename T >
void vanetza::asn1::PacketVisitor< T >::allow_chunk_deserialization ( bool  flag)
inline

Allow deserialization attempt of ChunkPacket when casting failed.

Parameters
flagtrue allows deserialization

Definition at line 58 of file packet_visitor.hpp.

◆ deserialize()

template<typename T >
void vanetza::asn1::PacketVisitor< T >::deserialize ( const byte_view_range range)
inlineprivate

Definition at line 74 of file packet_visitor.hpp.

◆ get_shared_wrapper()

template<typename T >
std::shared_ptr< const T > vanetza::asn1::PacketVisitor< T >::get_shared_wrapper ( ) const
inline

Definition at line 52 of file packet_visitor.hpp.

◆ operator()() [1/2]

template<typename T >
std::shared_ptr< const T > vanetza::asn1::PacketVisitor< T >::operator() ( const ChunkPacket packet)
inline

Definition at line 32 of file packet_visitor.hpp.

◆ operator()() [2/2]

template<typename T >
std::shared_ptr< const T > vanetza::asn1::PacketVisitor< T >::operator() ( const CohesivePacket packet)
inline

Definition at line 46 of file packet_visitor.hpp.

◆ start_deserialization_at()

template<typename T >
void vanetza::asn1::PacketVisitor< T >::start_deserialization_at ( OsiLayer  start)
inline

Set OSI layer where deserialization shall start, it always stops at end of OsiLayer::Application. By default, PacketVisitors starts at OsiLayer::Session for compatibility with BTP parser functions.

Parameters
startOSI layer

Definition at line 68 of file packet_visitor.hpp.

Member Data Documentation

◆ m_deserialize_chunk

template<typename T >
bool vanetza::asn1::PacketVisitor< T >::m_deserialize_chunk = true
private

Definition at line 82 of file packet_visitor.hpp.

◆ m_start_layer

template<typename T >
OsiLayer vanetza::asn1::PacketVisitor< T >::m_start_layer = OsiLayer::Session
private

Definition at line 83 of file packet_visitor.hpp.

◆ m_wrapper

template<typename T >
std::shared_ptr<const T> vanetza::asn1::PacketVisitor< T >::m_wrapper
private

Definition at line 81 of file packet_visitor.hpp.


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