This queue implements the timeout procedure described in (Section 9.19.2.6 "Retransmit procedures" paragraph 6; IEEE 802.11-2012). More...
#include "wifi-mac-queue.h"
Public Member Functions | |
WifiMacQueue (AcIndex ac=AC_UNDEF) | |
Constructor. More... | |
~WifiMacQueue () override | |
Ptr< WifiMpdu > | Dequeue () override |
Dequeue the packet in the front of the queue. More... | |
void | DequeueIfQueued (const std::list< Ptr< const WifiMpdu >> &mpdus) |
Dequeue the given MPDUs if they are stored in this queue. More... | |
bool | Enqueue (Ptr< WifiMpdu > item) override |
Enqueue the given Wifi MAC queue item at the end of the queue. More... | |
void | ExtractAllExpiredMpdus () const |
Move MPDUs with expired lifetime from all the container queues to the container queue storing MPDUs with expired lifetime. More... | |
void | ExtractExpiredMpdus (const WifiContainerQueueId &queueId) const |
Move MPDUs with expired lifetime from the container queue identified by the given queue ID to the container queue storing MPDUs with expired lifetime. More... | |
void | Flush () |
Flush the queue. More... | |
AcIndex | GetAc () const |
Get the Access Category of the packets stored in this queue. More... | |
Ptr< WifiMpdu > | GetAlias (Ptr< const WifiMpdu > mpdu, uint8_t linkId) |
Time | GetMaxDelay () const |
Return the maximum delay before the packet is discarded. More... | |
uint32_t | GetNBytes (const WifiContainerQueueId &queueId) const |
Get the amount of bytes currently stored in the container queue identified by the given queue ID. More... | |
uint32_t | GetNPackets (const WifiContainerQueueId &queueId) const |
Get the number of MPDUs currently stored in the container queue identified by the given queue ID. More... | |
Ptr< WifiMpdu > | GetOriginal (Ptr< WifiMpdu > mpdu) |
Unlike the GetOriginal() method of WifiMpdu, this method returns a non-const pointer to the original copy of the given MPDU. More... | |
Ptr< const WifiMpdu > | Peek () const override |
Peek the packet in the front of the queue. More... | |
Ptr< WifiMpdu > | Peek (std::optional< uint8_t > linkId) const |
Peek the packet in the front of the queue for transmission on the given link (if any). More... | |
Ptr< WifiMpdu > | PeekByQueueId (const WifiContainerQueueId &queueId, Ptr< const WifiMpdu > item=nullptr) const |
Search and return the first packet present in the container queue identified by the given queue ID. More... | |
Ptr< WifiMpdu > | PeekByTidAndAddress (uint8_t tid, Mac48Address dest, Ptr< const WifiMpdu > item=nullptr) const |
Search and return, if present in the queue, the first packet having the receiver address equal to dest, and TID equal to tid. More... | |
Ptr< WifiMpdu > | PeekFirstAvailable (uint8_t linkId, Ptr< const WifiMpdu > item=nullptr) const |
Return first available packet for transmission on the given link. More... | |
Ptr< WifiMpdu > | Remove () override |
Remove the packet in the front of the queue. More... | |
Ptr< WifiMpdu > | Remove (Ptr< const WifiMpdu > item) |
Remove the given item from the queue and return the item following the removed one, if any, or a null pointer otherwise. More... | |
void | Replace (Ptr< const WifiMpdu > currentItem, Ptr< WifiMpdu > newItem) |
Replace the given current item with the given new item. More... | |
void | SetMaxDelay (Time delay) |
Set the maximum delay before the packet is discarded. More... | |
void | SetScheduler (Ptr< WifiMacQueueScheduler > scheduler) |
Set the wifi MAC queue scheduler. More... | |
bool | TtlExceeded (Ptr< const WifiMpdu > item, const Time &now) |
Remove the given item if it has been in the queue for too long. More... | |
void | WipeAllExpiredMpdus () |
Remove all MPDUs with expired lifetime from this WifiMacQueue object. More... | |
Public Member Functions inherited from ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer > | |
Queue () | |
~Queue () override | |
void | Flush () |
Flush the queue by calling Remove() on each item enqueued. More... | |
Public Member Functions inherited from ns3::QueueBase | |
QueueBase () | |
~QueueBase () override | |
QueueSize | GetCurrentSize () const |
QueueSize | GetMaxSize () const |
uint32_t | GetNBytes () const |
uint32_t | GetNPackets () const |
uint32_t | GetTotalDroppedBytes () const |
uint32_t | GetTotalDroppedBytesAfterDequeue () const |
uint32_t | GetTotalDroppedBytesBeforeEnqueue () const |
uint32_t | GetTotalDroppedPackets () const |
uint32_t | GetTotalDroppedPacketsAfterDequeue () const |
uint32_t | GetTotalDroppedPacketsBeforeEnqueue () const |
uint32_t | GetTotalReceivedBytes () const |
uint32_t | GetTotalReceivedPackets () const |
bool | IsEmpty () const |
void | ResetStatistics () |
Resets the counts for dropped packets, dropped bytes, received packets, and received bytes. More... | |
void | SetMaxSize (QueueSize size) |
Set the maximum size of this queue. More... | |
bool | WouldOverflow (uint32_t nPackets, uint32_t nBytes) const |
Check if the queue would overflow with additional bytes or packets Note: the check is performed according to the queue's operating mode (bytes or packets). More... | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () const |
Decrement the reference count. More... | |
Public Member Functions inherited from ns3::ObjectBase | |
virtual | ~ObjectBase () |
Virtual destructor. More... | |
void | GetAttribute (std::string name, AttributeValue &value) const |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer > | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::QueueBase | |
static void | AppendItemTypeIfNotPresent (std::string &typeId, const std::string &itemType) |
Append the item type to the provided type ID if the latter does not end with '>'. More... | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Protected Member Functions | |
void | DoDispose () override |
Destructor implementation. More... | |
Protected Member Functions inherited from ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer > | |
Ptr< WifiMpdu > | DoDequeue (ConstIterator pos) |
Pull the item to dequeue from the queue. More... | |
void | DoDispose () override |
Destructor implementation. More... | |
bool | DoEnqueue (ConstIterator pos, Ptr< WifiMpdu > item) |
Push an item in the queue. More... | |
bool | DoEnqueue (ConstIterator pos, Ptr< WifiMpdu > item, Iterator &ret) |
Push an item in the queue. More... | |
Ptr< const WifiMpdu > | DoPeek (ConstIterator pos) const |
Peek the front item in the queue. More... | |
Ptr< WifiMpdu > | DoRemove (ConstIterator pos) |
Pull the item to drop from the queue. More... | |
void | DropAfterDequeue (Ptr< WifiMpdu > item) |
Drop a packet after dequeue. More... | |
void | DropBeforeEnqueue (Ptr< WifiMpdu > item) |
Drop a packet before enqueue. More... | |
const ns3::WifiMacQueueContainer & | GetContainer () const |
Get a const reference to the container of queue items. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Private Member Functions | |
void | DoDequeue (const std::list< ConstIterator > &iterators) |
Wrapper for the DoDequeue method provided by the base class that additionally resets the iterator field of the dequeued items and notifies the scheduler, if any item was dequeued. More... | |
bool | DoEnqueue (ConstIterator pos, Ptr< WifiMpdu > item) |
Wrapper for the DoEnqueue method provided by the base class that additionally sets the iterator field of the item and updates internal statistics, if insertion succeeded. More... | |
Ptr< WifiMpdu > | DoRemove (ConstIterator pos) |
Wrapper for the DoRemove method provided by the base class that additionally resets the iterator field of the item and notifies the scheduleer, if an item was dropped. More... | |
Iterator | GetIt (Ptr< const WifiMpdu > mpdu) const |
bool | Insert (ConstIterator pos, Ptr< WifiMpdu > item) |
Enqueue the given Wifi MAC queue item before the given position. More... | |
Private Attributes | |
AcIndex | m_ac |
the access category More... | |
Time | m_maxDelay |
Time to live for packets in the queue. More... | |
Ptr< WifiMacQueueScheduler > | m_scheduler |
the MAC queue scheduler More... | |
TracedCallback< Ptr< const WifiMpdu > > | m_traceExpired |
Traced callback: fired when a packet is dropped due to lifetime expiration. More... | |
NS_LOG_TEMPLATE_DECLARE | |
redefinition of the log component More... | |
Additional Inherited Members | |
Public Types inherited from ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer > | |
typedef WifiMpdu | ItemType |
Define ItemType as the type of the stored elements. More... | |
Protected Types inherited from ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer > | |
typedef Container::const_iterator | ConstIterator |
Const iterator. More... | |
typedef Container::iterator | Iterator |
Iterator. More... | |
Protected Attributes inherited from ns3::QueueBase | |
QueueSize | m_maxSize |
max queue size More... | |
TracedValue< uint32_t > | m_nBytes |
Number of bytes in the queue. More... | |
TracedValue< uint32_t > | m_nPackets |
Number of packets in the queue. More... | |
uint32_t | m_nTotalDroppedBytes |
Total dropped bytes. More... | |
uint32_t | m_nTotalDroppedBytesAfterDequeue |
Total dropped bytes after dequeue. More... | |
uint32_t | m_nTotalDroppedBytesBeforeEnqueue |
Total dropped bytes before enqueue. More... | |
uint32_t | m_nTotalDroppedPackets |
Total dropped packets. More... | |
uint32_t | m_nTotalDroppedPacketsAfterDequeue |
Total dropped packets after dequeue. More... | |
uint32_t | m_nTotalDroppedPacketsBeforeEnqueue |
Total dropped packets before enqueue. More... | |
uint32_t | m_nTotalReceivedBytes |
Total received bytes. More... | |
uint32_t | m_nTotalReceivedPackets |
Total received packets. More... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
This queue implements the timeout procedure described in (Section 9.19.2.6 "Retransmit procedures" paragraph 6; IEEE 802.11-2012).
When a packet is received by the MAC, to be sent to the PHY, it is queued in the internal queue after being tagged by the current time.
When a packet is dequeued, the queue checks its timestamp to verify whether or not it should be dropped. If dot11EDCATableMSDULifetime has elapsed, it is dropped. Otherwise, it is returned to the caller.
Compiling python bindings fails if the namespace (ns3) is not specified for WifiMacQueueContainerT.
Definition at line 66 of file wifi-mac-queue.h.
Constructor.
ac | the Access Category of the packets stored in this queue |
Definition at line 65 of file wifi-mac-queue.cc.
|
override |
Definition at line 71 of file wifi-mac-queue.cc.
References NS_LOG_FUNCTION_NOARGS.
Dequeue the packet in the front of the queue.
Implements ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >.
Definition at line 273 of file wifi-mac-queue.cc.
References NS_ABORT_MSG.
Dequeue the given MPDUs if they are stored in this queue.
mpdus | the given MPDUs |
Definition at line 282 of file wifi-mac-queue.cc.
References DoDequeue(), GetIt(), m_ac, NS_ASSERT, and NS_LOG_FUNCTION.
|
private |
Wrapper for the DoDequeue method provided by the base class that additionally resets the iterator field of the dequeued items and notifies the scheduler, if any item was dequeued.
iterators | the list of iterators pointing to the items to dequeue |
Definition at line 504 of file wifi-mac-queue.cc.
References ns3::QueueBase::GetMaxSize(), m_ac, m_scheduler, NS_LOG_FUNCTION, and ns3::QueueBase::SetMaxSize().
Referenced by DequeueIfQueued(), and Replace().
|
overrideprotectedvirtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.
It is safe to call GetObject() from within this method.
Reimplemented from ns3::Object.
Definition at line 77 of file wifi-mac-queue.cc.
References ns3::Queue< Item, Container >::DoDispose(), m_scheduler, and NS_LOG_FUNCTION.
|
private |
Wrapper for the DoEnqueue method provided by the base class that additionally sets the iterator field of the item and updates internal statistics, if insertion succeeded.
pos | the position before where the item will be inserted |
item | the item to enqueue |
Definition at line 455 of file wifi-mac-queue.cc.
References DoRemove(), ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), GetIt(), ns3::QueueBase::GetMaxSize(), ns3::WifiMacQueueContainer::GetQueueId(), m_ac, m_maxDelay, m_scheduler, ns3::Time::Max(), ns3::Simulator::Now(), NS_LOG_FUNCTION, and ns3::QueueBase::SetMaxSize().
Referenced by Insert().
|
private |
Wrapper for the DoRemove method provided by the base class that additionally resets the iterator field of the item and notifies the scheduleer, if an item was dropped.
pos | the position of the item to drop |
Definition at line 531 of file wifi-mac-queue.cc.
References ns3::Queue< Item, Container >::DoRemove(), ns3::QueueBase::GetMaxSize(), m_ac, m_scheduler, NS_LOG_FUNCTION, and ns3::QueueBase::SetMaxSize().
Referenced by DoEnqueue(), Remove(), and TtlExceeded().
Enqueue the given Wifi MAC queue item at the end of the queue.
item | the Wifi MAC queue item to be enqueued at the end |
Implements ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >.
Definition at line 231 of file wifi-mac-queue.cc.
References ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), ns3::WifiMacQueueContainer::GetQueueId(), Insert(), and NS_LOG_FUNCTION.
void ns3::WifiMacQueue::ExtractAllExpiredMpdus | ( | ) | const |
Move MPDUs with expired lifetime from all the container queues to the container queue storing MPDUs with expired lifetime.
Each MPDU that is found to have an expired lifetime feeds the "Expired" trace source and is notified to the scheduler.
Definition at line 143 of file wifi-mac-queue.cc.
References ns3::WifiMacQueueContainer::ExtractAllExpiredMpdus(), ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), m_ac, m_scheduler, m_traceExpired, NS_LOG_FUNCTION, and ns3::Simulator::ScheduleNow().
Referenced by WipeAllExpiredMpdus().
void ns3::WifiMacQueue::ExtractExpiredMpdus | ( | const WifiContainerQueueId & | queueId | ) | const |
Move MPDUs with expired lifetime from the container queue identified by the given queue ID to the container queue storing MPDUs with expired lifetime.
Each MPDU that is found to have an expired lifetime feeds the "Expired" trace source and is notified to the scheduler.
queueId | the given queue ID |
Definition at line 119 of file wifi-mac-queue.cc.
References ns3::WifiMacQueueContainer::ExtractExpiredMpdus(), ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), m_ac, m_scheduler, m_traceExpired, NS_LOG_FUNCTION, and ns3::Simulator::ScheduleNow().
Referenced by PeekByQueueId().
void ns3::WifiMacQueue::Flush | ( | ) |
Flush the queue.
Definition at line 412 of file wifi-mac-queue.cc.
References ns3::Queue< Item, Container >::Flush(), NS_LOG_FUNCTION, and WipeAllExpiredMpdus().
AcIndex ns3::WifiMacQueue::GetAc | ( | ) | const |
Get the Access Category of the packets stored in this queue.
Definition at line 85 of file wifi-mac-queue.cc.
References m_ac.
mpdu | the given MPDU |
linkId | the ID of the given link |
Definition at line 104 of file wifi-mac-queue.cc.
References GetIt().
|
private |
mpdu | the given MPDU |
Definition at line 91 of file wifi-mac-queue.cc.
References NS_ASSERT.
Referenced by DequeueIfQueued(), DoEnqueue(), GetAlias(), GetOriginal(), PeekByQueueId(), Remove(), Replace(), and TtlExceeded().
Time ns3::WifiMacQueue::GetMaxDelay | ( | ) | const |
Return the maximum delay before the packet is discarded.
Definition at line 225 of file wifi-mac-queue.cc.
References m_maxDelay.
uint32_t ns3::WifiMacQueue::GetNBytes | ( | const WifiContainerQueueId & | queueId | ) | const |
Get the amount of bytes currently stored in the container queue identified by the given queue ID.
queueId | the given queue ID |
Definition at line 449 of file wifi-mac-queue.cc.
References ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), and ns3::WifiMacQueueContainer::GetNBytes().
uint32_t ns3::WifiMacQueue::GetNPackets | ( | const WifiContainerQueueId & | queueId | ) | const |
Get the number of MPDUs currently stored in the container queue identified by the given queue ID.
queueId | the given queue ID |
Definition at line 443 of file wifi-mac-queue.cc.
References ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), and ns3::WifiMacQueueContainer::GetQueue().
Unlike the GetOriginal() method of WifiMpdu, this method returns a non-const pointer to the original copy of the given MPDU.
mpdu | the given MPDU |
Definition at line 98 of file wifi-mac-queue.cc.
References GetIt().
|
static |
Get the type ID.
Definition at line 41 of file wifi-mac-queue.cc.
References ns3::QueueBase::GetMaxSize(), m_traceExpired, ns3::MakeTimeAccessor(), ns3::MakeTimeChecker(), ns3::MakeTraceSourceAccessor(), ns3::MilliSeconds(), SetMaxDelay(), ns3::QueueBase::SetMaxSize(), and ns3::TypeId::SetParent().
|
private |
Enqueue the given Wifi MAC queue item before the given position.
pos | the position before which the item is to be inserted |
item | the Wifi MAC queue item to be enqueued |
Definition at line 240 of file wifi-mac-queue.cc.
References DoEnqueue(), ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), ns3::QueueBase::GetMaxSize(), ns3::QueueBase::GetNPackets(), ns3::WifiMacQueueContainer::GetQueue(), ns3::WifiMacQueueContainer::GetQueueId(), ns3::Simulator::Now(), NS_ABORT_MSG_IF, NS_ASSERT_MSG, NS_LOG_FUNCTION, ns3::PACKETS, and WipeAllExpiredMpdus().
Referenced by Enqueue(), and Replace().
Peek the packet in the front of the queue.
The packet is not removed.
Implements ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >.
Definition at line 303 of file wifi-mac-queue.cc.
Referenced by Remove().
Peek the packet in the front of the queue for transmission on the given link (if any).
The packet is not removed.
linkId | the ID of the link onto which we can transmit a packet |
Definition at line 309 of file wifi-mac-queue.cc.
References ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), ns3::WifiMacQueueContainer::GetQueue(), m_ac, m_scheduler, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Ptr< WifiMpdu > ns3::WifiMacQueue::PeekByQueueId | ( | const WifiContainerQueueId & | queueId, |
Ptr< const WifiMpdu > | item = nullptr |
||
) | const |
Search and return the first packet present in the container queue identified by the given queue ID.
If item is a null pointer, the search starts from the head of the container queue; MPDUs with expired lifetime at the head of the container queue are ignored (and moved to the container queue storing MPDUs with expired lifetime). If item is not a null pointer, the search starts from the packet following item in the container queue (and we do not check for expired lifetime because we assume that a previous call was made with a null pointer as argument, which removed the MPDUs with expired lifetime).
queueId | the given queue ID |
item | the item after which the search starts from |
Definition at line 334 of file wifi-mac-queue.cc.
References ExtractExpiredMpdus(), ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), GetIt(), ns3::WifiMacQueueContainer::GetQueue(), ns3::WifiMacQueueContainer::GetQueueId(), NS_ASSERT, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
Referenced by PeekByTidAndAddress(), and PeekFirstAvailable().
Ptr< WifiMpdu > ns3::WifiMacQueue::PeekByTidAndAddress | ( | uint8_t | tid, |
Mac48Address | dest, | ||
Ptr< const WifiMpdu > | item = nullptr |
||
) | const |
Search and return, if present in the queue, the first packet having the receiver address equal to dest, and TID equal to tid.
If item is not a null pointer, the search starts from the packet following item in the queue; otherwise, the search starts from the head of the queue. This method does not remove the packet from the queue. It is typically used by ns3::QosTxop in order to perform correct MSDU aggregation (A-MSDU).
tid | the given TID |
dest | the given destination |
item | the item after which the search starts from |
Definition at line 325 of file wifi-mac-queue.cc.
References ns3::Mac48Address::IsGroup(), NS_ABORT_IF, NS_LOG_FUNCTION, PeekByQueueId(), ns3::WIFI_QOSDATA_QUEUE, and ns3::WIFI_UNICAST.
Ptr< WifiMpdu > ns3::WifiMacQueue::PeekFirstAvailable | ( | uint8_t | linkId, |
Ptr< const WifiMpdu > | item = nullptr |
||
) | const |
Return first available packet for transmission on the given link.
If item is not a null pointer, the search starts from the packet following item in the queue; otherwise, the search starts from the head of the queue. The packet is not removed from queue.
linkId | the ID of the given link |
item | the item after which the search starts from |
Definition at line 357 of file wifi-mac-queue.cc.
References ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), ns3::WifiMacQueueContainer::GetQueue(), ns3::WifiMacQueueContainer::GetQueueId(), m_ac, m_scheduler, NS_ASSERT, NS_LOG_DEBUG, NS_LOG_FUNCTION, and PeekByQueueId().
Remove the packet in the front of the queue.
Implements ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >.
Definition at line 394 of file wifi-mac-queue.cc.
References Peek().
Remove the given item from the queue and return the item following the removed one, if any, or a null pointer otherwise.
If removeExpired is true, all the items in the queue from the head to the given position are removed if their lifetime expired.
item | the item to be removed |
Definition at line 400 of file wifi-mac-queue.cc.
References DoRemove(), GetIt(), m_ac, NS_ASSERT, and NS_LOG_FUNCTION.
Replace the given current item with the given new item.
Actually, the current item is dequeued and the new item is enqueued in its place. In this way, statistics about queue size (in terms of bytes) are correctly updated.
currentItem | the given current item |
newItem | the given new item |
Definition at line 423 of file wifi-mac-queue.cc.
References DoDequeue(), GetIt(), Insert(), m_ac, NS_ABORT_IF, NS_ASSERT, and NS_LOG_FUNCTION.
void ns3::WifiMacQueue::SetMaxDelay | ( | Time | delay | ) |
Set the maximum delay before the packet is discarded.
delay | the maximum delay |
Definition at line 218 of file wifi-mac-queue.cc.
References m_maxDelay, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
void ns3::WifiMacQueue::SetScheduler | ( | Ptr< WifiMacQueueScheduler > | scheduler | ) |
Set the wifi MAC queue scheduler.
scheduler | the wifi MAC queue scheduler |
Definition at line 211 of file wifi-mac-queue.cc.
References m_scheduler, and NS_LOG_FUNCTION.
Remove the given item if it has been in the queue for too long.
Return true if the item is removed, false otherwise.
item | the item whose lifetime is checked |
now | a copy of Simulator::Now() |
Definition at line 186 of file wifi-mac-queue.cc.
References DoRemove(), GetIt(), m_maxDelay, m_traceExpired, NS_ASSERT, and NS_LOG_DEBUG.
void ns3::WifiMacQueue::WipeAllExpiredMpdus | ( | ) |
Remove all MPDUs with expired lifetime from this WifiMacQueue object.
Definition at line 167 of file wifi-mac-queue.cc.
References ns3::Queue< Item, Container >::DoRemove(), ExtractAllExpiredMpdus(), ns3::WifiMacQueueContainer::GetAllExpiredMpdus(), ns3::Queue< WifiMpdu, ns3::WifiMacQueueContainer >::GetContainer(), and NS_LOG_FUNCTION.
Referenced by Flush(), and Insert().
|
private |
the access category
Definition at line 351 of file wifi-mac-queue.h.
Referenced by DequeueIfQueued(), DoDequeue(), DoEnqueue(), DoRemove(), ExtractAllExpiredMpdus(), ExtractExpiredMpdus(), GetAc(), Peek(), PeekFirstAvailable(), Remove(), and Replace().
|
private |
Time to live for packets in the queue.
Definition at line 350 of file wifi-mac-queue.h.
Referenced by DoEnqueue(), GetMaxDelay(), SetMaxDelay(), and TtlExceeded().
|
private |
the MAC queue scheduler
Definition at line 352 of file wifi-mac-queue.h.
Referenced by DoDequeue(), DoDispose(), DoEnqueue(), DoRemove(), ExtractAllExpiredMpdus(), ExtractExpiredMpdus(), Peek(), PeekFirstAvailable(), and SetScheduler().
|
private |
Traced callback: fired when a packet is dropped due to lifetime expiration.
Definition at line 355 of file wifi-mac-queue.h.
Referenced by ExtractAllExpiredMpdus(), ExtractExpiredMpdus(), GetTypeId(), and TtlExceeded().
|
private |
redefinition of the log component
Definition at line 357 of file wifi-mac-queue.h.