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 >+...)==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>
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>
const std::vector< T > & Get () const
 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.
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 229 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 CopyIesFromContainingFrame(), ns3::internal::DoCopyIeFromContainingFrame(), ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::m_elements, m_nonInheritance, and ns3::internal::RemoveIfNotInherited().

Referenced by CopyIesFromContainingFrame().

Here is the call graph for this function:
Here is the caller 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.

References DeserializeFromPerStaProfile(), and DeserializeFromPerStaProfileImpl().

Referenced by DeserializeFromPerStaProfile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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 DeserializeFromPerStaProfileImpl(), ns3::internal::DoCopyIeFromContainingFrame(), ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::DoDeserialize(), ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::m_elements, m_nonInheritance, and NS_ASSERT_MSG.

Referenced by DeserializeFromPerStaProfile(), and DeserializeFromPerStaProfileImpl().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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.

References GetSerializedSizeInPerStaProfile(), and GetSerializedSizeInPerStaProfileImpl().

Referenced by GetSerializedSizeInPerStaProfile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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(), GetSerializedSizeInPerStaProfileImpl(), ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::m_elements, ns3::internal::MustBeListedInNonInheritance(), and ns3::internal::MustBeSerializedInPerStaProfile().

Referenced by GetSerializedSizeInPerStaProfile(), and GetSerializedSizeInPerStaProfileImpl().

Here is the call graph for this function:
Here is the caller 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.

References InitForDeserialization().

Referenced by InitForDeserialization().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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.

References SerializeInPerStaProfile(), and SerializeInPerStaProfileImpl().

Referenced by SerializeInPerStaProfile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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::WifiMgtHeader< Derived, std::tuple< Elems... > >::m_elements, ns3::internal::MustBeListedInNonInheritance(), ns3::internal::MustBeSerializedInPerStaProfile(), and SerializeInPerStaProfileImpl().

Referenced by SerializeInPerStaProfile(), and SerializeInPerStaProfileImpl().

Here is the call graph for this function:
Here is the caller 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.

References ns3::WifiMgtHeader< Derived, std::tuple< Elems... > >::Get(), and SetMleContainingFrame().

Referenced by SetMleContainingFrame().

Here is the call graph for this function:
Here is the caller graph for this function:

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 315 of file wifi-mgt-header.h.

Referenced by CopyIesFromContainingFrame(), and DeserializeFromPerStaProfileImpl().


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