23 #include "ns3/simulator.h"
24 #include "ns3/packet.h"
25 #include "ns3/uinteger.h"
48 .AddConstructor<WifiMacQueue> ()
49 .AddAttribute (
"MaxPacketNumber",
"If a packet arrives when there are already this number of packets, it is dropped.",
52 MakeUintegerChecker<uint32_t> ())
53 .AddAttribute (
"MaxDelay",
"If a packet stays longer than this delay in the queue, it is dropped.",
172 if (it->hdr.IsQosData ())
175 && it->hdr.GetQosTid () == tid)
199 if (it->hdr.IsQosData ())
202 && it->hdr.GetQosTid () == tid)
238 return it->hdr.GetAddr1 ();
242 return it->hdr.GetAddr2 ();
246 return it->hdr.GetAddr3 ();
255 for (; it !=
m_queue.end (); it++)
257 if (it->packet == packet)
285 uint32_t nPackets = 0;
293 if (it->hdr.IsQosData () && it->hdr.GetQosTid () == tid)
311 if (!it->hdr.IsQosData ()
312 || !blockedPackets->
IsBlocked (it->hdr.GetAddr1 (), it->hdr.GetQosTid ()))
315 timestamp = it->tstamp;
332 if (!it->hdr.IsQosData ()
333 || !blockedPackets->
IsBlocked (it->hdr.GetAddr1 (), it->hdr.GetQosTid ()))
336 timestamp = it->tstamp;
keep track of time values and allow control of global simulation resolution
void SetMaxDelay(Time delay)
Ptr< const Packet > packet
Ptr< const Packet > PeekByTidAndAddress(WifiMacHeader *hdr, uint8_t tid, WifiMacHeader::AddressType type, Mac48Address addr)
uint32_t GetNPacketsByTidAndAddress(uint8_t tid, WifiMacHeader::AddressType type, Mac48Address addr)
bool Remove(Ptr< const Packet > packet)
void SetMaxSize(uint32_t maxSize)
Ptr< const Packet > DequeueFirstAvailable(WifiMacHeader *hdr, Time &tStamp, const QosBlockedDestinations *blockedPackets)
Ptr< const Packet > DequeueByTidAndAddress(WifiMacHeader *hdr, uint8_t tid, WifiMacHeader::AddressType type, Mac48Address addr)
hold objects of type ns3::Time
Hold an unsigned integer type.
NS_OBJECT_ENSURE_REGISTERED(AntennaModel)
static TypeId GetTypeId(void)
Mac48Address GetAddressForPacket(enum WifiMacHeader::AddressType type, PacketQueueI)
uint32_t GetMaxSize(void) const
Ptr< const Packet > Dequeue(WifiMacHeader *hdr)
Ptr< const Packet > Peek(WifiMacHeader *hdr)
void PushFront(Ptr< const Packet > packet, const WifiMacHeader &hdr)
Ptr< const Packet > PeekFirstAvailable(WifiMacHeader *hdr, Time &tStamp, const QosBlockedDestinations *blockedPackets)
void Enqueue(Ptr< const Packet > packet, const WifiMacHeader &hdr)
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range. Both limits are inclusive.
Time GetMaxDelay(void) const
a base class which provides memory management and object aggregation
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
std::list< struct Item >::iterator PacketQueueI
Item(Ptr< const Packet > packet, const WifiMacHeader &hdr, Time tstamp)
bool IsBlocked(Mac48Address dest, uint8_t tid) const