|
|
| 23 |
#include "ns3/simulator.h" |
23 |
#include "ns3/simulator.h" |
| 24 |
#include "ns3/packet.h" |
24 |
#include "ns3/packet.h" |
| 25 |
#include "ns3/uinteger.h" |
25 |
#include "ns3/uinteger.h" |
|
|
26 |
#include "ns3/enum.h" |
| 26 |
#include "wifi-mac-queue.h" |
27 |
#include "wifi-mac-queue.h" |
| 27 |
#include "qos-blocked-destinations.h" |
28 |
#include "qos-blocked-destinations.h" |
| 28 |
|
29 |
|
|
|
| 54 |
TimeValue (MilliSeconds (500.0)), |
55 |
TimeValue (MilliSeconds (500.0)), |
| 55 |
MakeTimeAccessor (&WifiMacQueue::m_maxDelay), |
56 |
MakeTimeAccessor (&WifiMacQueue::m_maxDelay), |
| 56 |
MakeTimeChecker ()) |
57 |
MakeTimeChecker ()) |
|
|
58 |
.AddAttribute ("DropPolicy", "Upon enqueue with full queue, drop oldest (DropOldest) or newest (DropNewest) packet", |
| 59 |
EnumValue (DROP_NEWEST), |
| 60 |
MakeEnumAccessor (&WifiMacQueue::m_dropPolicy), |
| 61 |
MakeEnumChecker (WifiMacQueue::DROP_OLDEST, "DropOldest", |
| 62 |
WifiMacQueue::DROP_NEWEST, "DropNewest")) |
| 57 |
; |
63 |
; |
| 58 |
return tid; |
64 |
return tid; |
| 59 |
} |
65 |
} |
|
|
| 98 |
Cleanup (); |
104 |
Cleanup (); |
| 99 |
if (m_size == m_maxSize) |
105 |
if (m_size == m_maxSize) |
| 100 |
{ |
106 |
{ |
| 101 |
return; |
107 |
if (m_dropPolicy == DROP_NEWEST) |
|
|
108 |
{ |
| 109 |
return; |
| 110 |
} |
| 111 |
else if (m_dropPolicy == DROP_OLDEST) |
| 112 |
{ |
| 113 |
PacketQueue::iterator it = m_queue.begin(); |
| 114 |
m_queue.erase(it); |
| 115 |
m_size--; |
| 116 |
} |
| 102 |
} |
117 |
} |
| 103 |
Time now = Simulator::Now (); |
118 |
Time now = Simulator::Now (); |
| 104 |
m_queue.push_back (Item (packet, hdr, now)); |
119 |
m_queue.push_back (Item (packet, hdr, now)); |