A Discrete-Event Network Simulator
API
ns3::WifiMacQueueItem Class Reference

WifiMacQueueItem stores (const) packets along with their Wifi MAC headers and the time when they were enqueued. More...

#include "wifi-mac-queue-item.h"

+ Inheritance diagram for ns3::WifiMacQueueItem:
+ Collaboration diagram for ns3::WifiMacQueueItem:

Classes

struct  QueueIteratorPair
 Information needed to remove an MSDU from the queue. More...
 

Public Types

typedef std::list< Ptr< WifiMacQueueItem > >::const_iterator ConstIterator
 Const iterator typedef. More...
 
typedef std::list< std::pair< Ptr< const Packet >, AmsduSubframeHeader > > DeaggregatedMsdus
 DeaggregatedMsdus typedef. More...
 
typedef std::list< std::pair< Ptr< const Packet >, AmsduSubframeHeader > >::const_iterator DeaggregatedMsdusCI
 DeaggregatedMsdusCI typedef. More...
 

Public Member Functions

 WifiMacQueueItem (Ptr< const Packet > p, const WifiMacHeader &header)
 Create a Wifi MAC queue item containing a packet and a Wifi MAC header. More...
 
 WifiMacQueueItem (Ptr< const Packet > p, const WifiMacHeader &header, Time tstamp)
 Create a Wifi MAC queue item containing a packet and a Wifi MAC header. More...
 
virtual ~WifiMacQueueItem ()
 
void Aggregate (Ptr< const WifiMacQueueItem > msdu)
 Aggregate the MSDU contained in the given MPDU to this MPDU (thus constituting an A-MSDU). More...
 
DeaggregatedMsdusCI begin (void)
 Get a constant iterator pointing to the first MSDU in the list of aggregated MSDUs. More...
 
DeaggregatedMsdusCI end (void)
 Get a constant iterator indicating past-the-last MSDU in the list of aggregated MSDUs. More...
 
Mac48Address GetDestinationAddress (void) const
 Return the destination address present in the header. More...
 
const WifiMacHeaderGetHeader (void) const
 Get the header stored in this item. More...
 
WifiMacHeaderGetHeader (void)
 Get the header stored in this item. More...
 
Ptr< const PacketGetPacket (void) const
 Get the packet stored in this item. More...
 
uint32_t GetPacketSize (void) const
 Return the size in bytes of the packet or control header or management header stored by this item. More...
 
Ptr< PacketGetProtocolDataUnit (void) const
 Get the MAC protocol data unit (MPDU) corresponding to this item (i.e. More...
 
const std::list< QueueIteratorPair > & GetQueueIteratorPairs (void) const
 Get a const reference to the list of iterators pointing to the positions of the items in the queue. More...
 
uint32_t GetSize (void) const
 Return the size of the packet stored by this item, including header size and trailer size. More...
 
Time GetTimeStamp (void) const
 Get the timestamp included in this item. More...
 
bool IsFragment (void) const
 Return true if this item contains an MSDU fragment, false otherwise. More...
 
bool IsQueued (void) const
 Return true if this item is stored in some queue, false otherwise. More...
 
virtual void Print (std::ostream &os) const
 Print the item contents. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< WifiMacQueueItem >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 

Private Member Functions

void DoAggregate (Ptr< const WifiMacQueueItem > msdu)
 Aggregate the MSDU contained in the given MPDU to this MPDU (thus constituting an A-MSDU). More...
 

Private Attributes

WifiMacHeader m_header
 Wifi MAC header associated with the packet. More...
 
DeaggregatedMsdus m_msduList
 The list of aggregated MSDUs included in this MPDU. More...
 
Ptr< const Packetm_packet
 The packet (MSDU or A-MSDU) contained in this queue item. More...
 
std::list< QueueIteratorPairm_queueIts
 Queue iterators pointing to this MSDU(s), if queued. More...
 
Time m_tstamp
 timestamp when the packet arrived at the queue More...
 

Friends

class WifiMacQueue
 

Detailed Description

WifiMacQueueItem stores (const) packets along with their Wifi MAC headers and the time when they were enqueued.

Definition at line 44 of file wifi-mac-queue-item.h.

Member Typedef Documentation

◆ ConstIterator

Const iterator typedef.

Definition at line 144 of file wifi-mac-queue-item.h.

◆ DeaggregatedMsdus

DeaggregatedMsdus typedef.

Definition at line 126 of file wifi-mac-queue-item.h.

◆ DeaggregatedMsdusCI

DeaggregatedMsdusCI typedef.

Definition at line 128 of file wifi-mac-queue-item.h.

Constructor & Destructor Documentation

◆ WifiMacQueueItem() [1/2]

ns3::WifiMacQueueItem::WifiMacQueueItem ( Ptr< const Packet p,
const WifiMacHeader header 
)

Create a Wifi MAC queue item containing a packet and a Wifi MAC header.

Parameters
pthe const packet included in the created item.
headerthe Wifi MAC header included in the created item.

Definition at line 36 of file wifi-mac-queue-item.cc.

◆ WifiMacQueueItem() [2/2]

ns3::WifiMacQueueItem::WifiMacQueueItem ( Ptr< const Packet p,
const WifiMacHeader header,
Time  tstamp 
)

Create a Wifi MAC queue item containing a packet and a Wifi MAC header.

Parameters
pthe const packet included in the created item.
headerthe Wifi MAC header included in the created item.
tstampthe timestamp associated with the created item.

Definition at line 41 of file wifi-mac-queue-item.cc.

References ns3::Packet::Copy(), ns3::MsduAggregator::Deaggregate(), ns3::WifiMacHeader::IsQosAmsdu(), ns3::WifiMacHeader::IsQosData(), and m_msduList.

+ Here is the call graph for this function:

◆ ~WifiMacQueueItem()

ns3::WifiMacQueueItem::~WifiMacQueueItem ( )
virtual

Definition at line 52 of file wifi-mac-queue-item.cc.

Member Function Documentation

◆ Aggregate()

void ns3::WifiMacQueueItem::Aggregate ( Ptr< const WifiMacQueueItem msdu)

Aggregate the MSDU contained in the given MPDU to this MPDU (thus constituting an A-MSDU).

Note that the given MPDU cannot contain an A-MSDU.

Parameters
msduthe MPDU containing the MSDU to aggregate

Definition at line 114 of file wifi-mac-queue-item.cc.

References DoAggregate(), ns3::WifiMacHeader::GetAddr1(), ns3::WifiMacHeader::GetAddr2(), ns3::WifiMacHeader::IsFromDs(), ns3::WifiMacHeader::IsToDs(), m_header, m_msduList, m_packet, m_queueIts, NS_ABORT_MSG_IF, NS_ASSERT, NS_LOG_FUNCTION, ns3::WifiMacHeader::SetAddr3(), and ns3::WifiMacHeader::SetQosAmsdu().

Referenced by ns3::MsduAggregator::GetNextAmsdu().

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

◆ begin()

WifiMacQueueItem::DeaggregatedMsdusCI ns3::WifiMacQueueItem::begin ( void  )

Get a constant iterator pointing to the first MSDU in the list of aggregated MSDUs.

Returns
a constant iterator pointing to the first MSDU in the list of aggregated MSDUs

Definition at line 217 of file wifi-mac-queue-item.cc.

References m_msduList.

◆ DoAggregate()

void ns3::WifiMacQueueItem::DoAggregate ( Ptr< const WifiMacQueueItem msdu)
private

Aggregate the MSDU contained in the given MPDU to this MPDU (thus constituting an A-MSDU).

Note that the given MPDU cannot contain an A-MSDU.

Parameters
msduthe MPDU containing the MSDU to aggregate

Definition at line 149 of file wifi-mac-queue-item.cc.

References ns3::Packet::AddAtEnd(), ns3::Packet::AddHeader(), ns3::MsduAggregator::CalculatePadding(), ns3::Packet::Copy(), ns3::Packet::GetSize(), m_msduList, m_packet, m_queueIts, m_tstamp, ns3::Max(), NS_ASSERT, NS_LOG_FUNCTION, ns3::AmsduSubframeHeader::SetDestinationAddr(), ns3::AmsduSubframeHeader::SetLength(), and ns3::AmsduSubframeHeader::SetSourceAddr().

Referenced by Aggregate().

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

◆ end()

WifiMacQueueItem::DeaggregatedMsdusCI ns3::WifiMacQueueItem::end ( void  )

Get a constant iterator indicating past-the-last MSDU in the list of aggregated MSDUs.

Returns
a constant iterator indicating past-the-last MSDU in the list of aggregated MSDUs

Definition at line 223 of file wifi-mac-queue-item.cc.

References m_msduList.

◆ GetDestinationAddress()

Mac48Address ns3::WifiMacQueueItem::GetDestinationAddress ( void  ) const

Return the destination address present in the header.

Returns
the destination address

Definition at line 75 of file wifi-mac-queue-item.cc.

References ns3::WifiMacHeader::GetAddr1(), and m_header.

+ Here is the call graph for this function:

◆ GetHeader() [1/2]

const WifiMacHeader & ns3::WifiMacQueueItem::GetHeader ( void  ) const

Get the header stored in this item.

Returns
the header stored in this item.

Definition at line 63 of file wifi-mac-queue-item.cc.

References m_header.

Referenced by ns3::QosTxop::CompleteMpduTx(), ns3::FrameExchangeManager::CtsTimeout(), ns3::ApWifiMac::DeaggregateAmsduAndForward(), ns3::QosTxop::DequeuePeekedFrame(), ns3::BlockAckManager::DiscardOutstandingMpdus(), OriginatorBlockAckWindowTest::DoRun(), ns3::FrameExchangeManager::GetFirstFragmentIfNeeded(), ns3::MpduAggregator::GetNextAmpdu(), ns3::MsduAggregator::GetNextAmsdu(), ns3::FrameExchangeManager::GetNextFragment(), ns3::BlockAckManager::InsertInRetryQueue(), ns3::FrameExchangeManager::NormalAckTimeout(), ns3::QosTxop::NotifyAccessGranted(), ns3::Txop::NotifyAccessGranted(), ns3::BlockAckManager::NotifyMissedAck(), ns3::FrameExchangeManager::NotifyReceivedNormalAck(), ns3::AdhocWifiMac::Receive(), ns3::MacRxMiddle::Receive(), ns3::ApWifiMac::Receive(), ns3::OcbWifiMac::Receive(), ns3::MeshWifiInterfaceMac::Receive(), ns3::StaWifiMac::Receive(), ns3::RegularWifiMac::Receive(), ns3::FrameExchangeManager::ReceivedNormalAck(), ns3::FrameExchangeManager::ReceiveMpdu(), ns3::MacLow::ReceiveMpdu(), ns3::MacLow::ReceiveOk(), ns3::FrameExchangeManager::RetransmitMpduAfterMissedCts(), ns3::Txop::SendCfFrame(), ns3::FrameExchangeManager::SendMpdu(), ns3::FrameExchangeManager::SendMpduWithProtection(), ns3::WifiAckManager::SetQosAckPolicy(), ns3::QosTxop::StartNextPacket(), ns3::FrameExchangeManager::StartTransmission(), ns3::WaveMacLow::StartTransmission(), ns3::MacLow::StoreMpduIfNeeded(), ns3::BlockAckManager::StorePacket(), and ns3::QosTxop::UpdateCurrentPacket().

+ Here is the caller graph for this function:

◆ GetHeader() [2/2]

WifiMacHeader & ns3::WifiMacQueueItem::GetHeader ( void  )

Get the header stored in this item.

Returns
the header stored in this item.

Definition at line 69 of file wifi-mac-queue-item.cc.

References m_header.

◆ GetPacket()

◆ GetPacketSize()

uint32_t ns3::WifiMacQueueItem::GetPacketSize ( void  ) const

Return the size in bytes of the packet or control header or management header stored by this item.

Returns
the size in bytes of the packet or control header or management header stored by this item

Definition at line 87 of file wifi-mac-queue-item.cc.

References ns3::Packet::GetSize(), and m_packet.

Referenced by ns3::FrameExchangeManager::GetNextFragment(), GetSize(), Print(), and ns3::FrameExchangeManager::StartTransmission().

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

◆ GetProtocolDataUnit()

Ptr< Packet > ns3::WifiMacQueueItem::GetProtocolDataUnit ( void  ) const

Get the MAC protocol data unit (MPDU) corresponding to this item (i.e.

a copy of the packet stored in this item wrapped with MAC header and trailer)

Returns
the MAC protocol data unit corresponding to this item.

Definition at line 105 of file wifi-mac-queue-item.cc.

References ns3::Packet::AddHeader(), ns3::AddWifiMacTrailer(), ns3::Packet::Copy(), m_header, and m_packet.

+ Here is the call graph for this function:

◆ GetQueueIteratorPairs()

const std::list< WifiMacQueueItem::QueueIteratorPair > & ns3::WifiMacQueueItem::GetQueueIteratorPairs ( void  ) const

Get a const reference to the list of iterators pointing to the positions of the items in the queue.

The list is empty if the item is not stored in a queue. The list contains multiple iterators in case of A-MSDU that is not stored in the Block Ack Manager retransmit queue.

Definition at line 211 of file wifi-mac-queue-item.cc.

References m_queueIts.

Referenced by ns3::FrameExchangeManager::DequeueMpdu(), and ns3::FrameExchangeManager::GetFirstFragmentIfNeeded().

+ Here is the caller graph for this function:

◆ GetSize()

uint32_t ns3::WifiMacQueueItem::GetSize ( void  ) const

Return the size of the packet stored by this item, including header size and trailer size.

Returns
the size of the packet stored by this item in bytes.

Definition at line 93 of file wifi-mac-queue-item.cc.

References GetPacketSize(), ns3::WifiMacHeader::GetSerializedSize(), m_header, and ns3::WIFI_MAC_FCS_LENGTH.

Referenced by ns3::MpduAggregator::GetNextAmpdu(), ns3::FrameExchangeManager::SendMpdu(), and ns3::WifiPsdu::WifiPsdu().

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

◆ GetTimeStamp()

Time ns3::WifiMacQueueItem::GetTimeStamp ( void  ) const

Get the timestamp included in this item.

Returns
the timestamp included in this item.

Definition at line 81 of file wifi-mac-queue-item.cc.

References m_tstamp.

Referenced by ns3::FrameExchangeManager::GetFirstFragmentIfNeeded(), ns3::QosTxop::NotifyAccessGranted(), ns3::QosTxop::StartNextPacket(), and ns3::QosTxop::UpdateCurrentPacket().

+ Here is the caller graph for this function:

◆ IsFragment()

bool ns3::WifiMacQueueItem::IsFragment ( void  ) const

Return true if this item contains an MSDU fragment, false otherwise.

Returns
true if this item contains an MSDU fragment, false otherwise

Definition at line 99 of file wifi-mac-queue-item.cc.

References ns3::WifiMacHeader::GetFragmentNumber(), ns3::WifiMacHeader::IsMoreFragments(), and m_header.

Referenced by ns3::FrameExchangeManager::GetFirstFragmentIfNeeded(), and ns3::FrameExchangeManager::StartTransmission().

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

◆ IsQueued()

bool ns3::WifiMacQueueItem::IsQueued ( void  ) const

Return true if this item is stored in some queue, false otherwise.

Returns
true if this item is stored in some queue, false otherwise

Definition at line 205 of file wifi-mac-queue-item.cc.

References m_queueIts.

Referenced by ns3::FrameExchangeManager::DequeueMpdu(), and ns3::FrameExchangeManager::SendMpduWithProtection().

+ Here is the caller graph for this function:

◆ Print()

void ns3::WifiMacQueueItem::Print ( std::ostream &  os) const
virtual

Friends And Related Function Documentation

◆ WifiMacQueue

friend class WifiMacQueue
friend

Definition at line 190 of file wifi-mac-queue-item.h.

Member Data Documentation

◆ m_header

WifiMacHeader ns3::WifiMacQueueItem::m_header
private

Wifi MAC header associated with the packet.

Definition at line 193 of file wifi-mac-queue-item.h.

Referenced by Aggregate(), GetDestinationAddress(), GetHeader(), GetProtocolDataUnit(), GetSize(), IsFragment(), and Print().

◆ m_msduList

DeaggregatedMsdus ns3::WifiMacQueueItem::m_msduList
private

The list of aggregated MSDUs included in this MPDU.

Definition at line 195 of file wifi-mac-queue-item.h.

Referenced by Aggregate(), begin(), DoAggregate(), end(), and WifiMacQueueItem().

◆ m_packet

Ptr<const Packet> ns3::WifiMacQueueItem::m_packet
private

The packet (MSDU or A-MSDU) contained in this queue item.

Definition at line 192 of file wifi-mac-queue-item.h.

Referenced by Aggregate(), DoAggregate(), GetPacket(), GetPacketSize(), GetProtocolDataUnit(), and Print().

◆ m_queueIts

std::list<QueueIteratorPair> ns3::WifiMacQueueItem::m_queueIts
private

◆ m_tstamp

Time ns3::WifiMacQueueItem::m_tstamp
private

timestamp when the packet arrived at the queue

Definition at line 194 of file wifi-mac-queue-item.h.

Referenced by DoAggregate(), GetTimeStamp(), and Print().


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