A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > > Class Template Reference

Add methods needed to serialize/deserialize a management header into a Per-STA Profile subelement of a Multi-Link Element. More...

#include "wifi-mgt-header.h"

+ Inheritance diagram for ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >:
+ Collaboration diagram for ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >:

Public Member Functions

void CopyIesFromContainingFrame (const Derived &frame)
 Copy Information Elements inherited from the management frame containing the Multi-Link Element into this header (which is stored in a Per-STA Profile subelement).
 
uint32_t DeserializeFromPerStaProfile (Buffer::Iterator start, uint16_t length, const Derived &frame)
 Deserialize this header from a Per-STA Profile subelement of a Multi-Link Element.
 
uint32_t GetSerializedSizeInPerStaProfile (const Derived &frame) const
 
void SerializeInPerStaProfile (Buffer::Iterator start, const Derived &frame) const
 Serialize this header into a Per-STA Profile subelement of a Multi-Link Element.
 
- Public Member Functions inherited from ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >
uint32_t Deserialize (Buffer::Iterator start) final
 
template<typename T , std::enable_if_t<(std::is_same_v< std::vector< T >, Elems >+...)==0, int > = 0>
std::optional< T > & Get ()
 Access a (mandatory or optional) Information Element.
 
template<typename T , std::enable_if_t<(std::is_same_v< std::vector< T >, Elems >+...)==1, int > = 0>
std::vector< T > & Get ()
 Access an Information Element that can be present zero or more times.
 
template<typename T , std::enable_if_t<(std::is_same_v< std::vector< T >, Elems >+...)==0, int > = 0>
const std::optional< T > & Get () const
 Access a (mandatory or optional) Information Element.
 
template<typename T , std::enable_if_t<(std::is_same_v< std::vector< T >, Elems >+...)==1, int > = 0>
const std::vector< T > & Get () const
 Access an Information Element that can be present zero or more times.
 
uint32_t GetSerializedSize () const final
 
void Print (std::ostream &os) const final
 
void Serialize (Buffer::Iterator start) const final
 
- Public Member Functions inherited from ns3::Header
 ~Header () override
 
virtual uint32_t Deserialize (Buffer::Iterator start, Buffer::Iterator end)
 Deserialize the object from a buffer iterator.
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor.
 
void GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const
 Get the value of an attribute, raising fatal errors if unsuccessful.
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising errors.
 
virtual TypeId GetInstanceTypeId () const =0
 Get the most derived TypeId for this Object.
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful.
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors.
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context.
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context.
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context.
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context.
 

Protected Member Functions

uint32_t DeserializeFromPerStaProfileImpl (Buffer::Iterator start, uint16_t length, const Derived &frame)
 Deserialize this header from a Per-STA Profile subelement of a Multi-Link Element.
 
uint32_t GetSerializedSizeInPerStaProfileImpl (const Derived &frame) const
 
void InitForDeserialization (std::optional< MultiLinkElement > &optElem)
 
void SerializeInPerStaProfileImpl (Buffer::Iterator start, const Derived &frame) const
 Serialize this header into a Per-STA Profile subelement of a Multi-Link Element.
 
void SetMleContainingFrame () const
 Pass a pointer to this frame to the Multi-Link Element (if any) included in this frame.
 
- Protected Member Functions inherited from ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >
uint32_t DeserializeImpl (Buffer::Iterator start)
 
template<typename T >
Buffer::Iterator DoDeserialize (std::optional< T > &elem, Buffer::Iterator start)
 
template<typename T >
Buffer::Iterator DoDeserialize (std::vector< T > &elems, Buffer::Iterator start)
 
uint32_t GetSerializedSizeImpl () const
 
void InitForDeserialization (std::optional< EhtCapabilities > &optElem)
 
template<typename IE >
void InitForDeserialization (std::optional< IE > &optElem)
 
void PrintImpl (std::ostream &os) const
 
void SerializeImpl (Buffer::Iterator start) const
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes.
 
virtual void NotifyConstructionCompleted ()
 Notifier called once the ObjectBase is fully constructed.
 

Private Attributes

std::optional< NonInheritancem_nonInheritance
 the Non-Inheritance IE possibly appended to the Per-STA Profile subelement
 

Additional Inherited Members

- Static Public Member Functions inherited from ns3::Header
static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::Chunk
static TypeId GetTypeId ()
 Get the type ID.
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID.
 
- Protected Types inherited from ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >
using Elements = std::tuple<internal::GetStoredIeT<Elems>...>
 type of the Information Elements contained by this frame
 
- Protected Attributes inherited from ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >
Elements m_elements
 Information Elements contained by this frame.
 

Detailed Description

template<typename Derived, typename... Elems>
class ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >

Add methods needed to serialize/deserialize a management header into a Per-STA Profile subelement of a Multi-Link Element.

Template Parameters
Derived[explicit] the type of derived management frame
Elems[explicit] sorted list of Information Elements that can be included in mgt frame

Definition at line 227 of file wifi-mgt-header.h.

Member Function Documentation

◆ CopyIesFromContainingFrame()

template<typename Derived , typename... Elems>
void ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::CopyIesFromContainingFrame ( const Derived & frame)

Copy Information Elements inherited from the management frame containing the Multi-Link Element into this header (which is stored in a Per-STA Profile subelement).

This method shall be invoked when the deserialization has been completed (i.e., the Non-Inheritance element, if present, has been deserialized).

Parameters
framethe frame containing the Multi-Link Element

Definition at line 949 of file wifi-mgt-header.h.

References ns3::internal::DoCopyIeFromContainingFrame(), and ns3::internal::RemoveIfNotInherited().

+ Here is the call graph for this function:

◆ DeserializeFromPerStaProfile()

template<typename Derived , typename... Elems>
uint32_t ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::DeserializeFromPerStaProfile ( Buffer::Iterator start,
uint16_t length,
const Derived & frame )

Deserialize this header from a Per-STA Profile subelement of a Multi-Link Element.

Parameters
startan iterator which points to where the header should be read from
lengththe expected number of bytes to read
framethe frame containing the Multi-Link Element
Returns
the number of bytes read

Definition at line 862 of file wifi-mgt-header.h.

◆ DeserializeFromPerStaProfileImpl()

template<typename Derived , typename... Elems>
uint32_t ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::DeserializeFromPerStaProfileImpl ( Buffer::Iterator start,
uint16_t length,
const Derived & frame )
protected

Deserialize this header from a Per-STA Profile subelement of a Multi-Link Element.

Parameters
startan iterator which points to where the header should be read from
lengththe expected number of bytes to read
framethe frame containing the Multi-Link Element
Returns
the number of bytes read

Definition at line 872 of file wifi-mgt-header.h.

References NS_ASSERT_MSG.

◆ GetSerializedSizeInPerStaProfile()

template<typename Derived , typename... Elems>
uint32_t ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::GetSerializedSizeInPerStaProfile ( const Derived & frame) const
Parameters
framethe frame containing the Multi-Link Element
Returns
the number of bytes that are needed to serialize this header into a Per-STA Profile subelement of the Multi-Link Element

Definition at line 726 of file wifi-mgt-header.h.

◆ GetSerializedSizeInPerStaProfileImpl()

template<typename Derived , typename... Elems>
uint32_t ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::GetSerializedSizeInPerStaProfileImpl ( const Derived & frame) const
protected
Parameters
framethe frame containing the Multi-Link Element
Returns
the number of bytes that are needed to serialize this header into a Per-STA Profile subelement of the Multi-Link Element

Definition at line 734 of file wifi-mgt-header.h.

References ns3::internal::DoGetSerializedSize(), ns3::internal::MustBeListedInNonInheritance(), and ns3::internal::MustBeSerializedInPerStaProfile().

+ Here is the call graph for this function:

◆ InitForDeserialization()

template<typename Derived , typename... Elems>
void ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::InitForDeserialization ( std::optional< MultiLinkElement > & optElem)
protected
Parameters
optElemthe MultiLinkElement object to initialize for deserializing the information element into

Definition at line 384 of file wifi-mgt-header.h.

◆ SerializeInPerStaProfile()

template<typename Derived , typename... Elems>
void ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::SerializeInPerStaProfile ( Buffer::Iterator start,
const Derived & frame ) const

Serialize this header into a Per-STA Profile subelement of a Multi-Link Element.

Parameters
startan iterator which points to where the header should be written
framethe frame containing the Multi-Link Element

Definition at line 770 of file wifi-mgt-header.h.

◆ SerializeInPerStaProfileImpl()

template<typename Derived , typename... Elems>
void ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::SerializeInPerStaProfileImpl ( Buffer::Iterator start,
const Derived & frame ) const
protected

Serialize this header into a Per-STA Profile subelement of a Multi-Link Element.

Parameters
startan iterator which points to where the header should be written
framethe frame containing the Multi-Link Element

Definition at line 779 of file wifi-mgt-header.h.

References ns3::internal::DoSerialize(), ns3::internal::MustBeListedInNonInheritance(), and ns3::internal::MustBeSerializedInPerStaProfile().

+ Here is the call graph for this function:

◆ SetMleContainingFrame()

template<typename Derived , typename... Elems>
void ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::SetMleContainingFrame ( ) const
protected

Pass a pointer to this frame to the Multi-Link Element (if any) included in this frame.

Definition at line 971 of file wifi-mgt-header.h.

Member Data Documentation

◆ m_nonInheritance

template<typename Derived , typename... Elems>
std::optional<NonInheritance> ns3::MgtHeaderInPerStaProfile< Derived, std::tuple< Elems... > >::m_nonInheritance
private

the Non-Inheritance IE possibly appended to the Per-STA Profile subelement

Definition at line 313 of file wifi-mgt-header.h.


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