QueueDiscItem is the abstract base class for items that are stored in a queue disc. More...
#include "queue-item.h"
Public Member Functions | |
QueueDiscItem ()=delete | |
QueueDiscItem (const QueueDiscItem &)=delete | |
QueueDiscItem (Ptr< Packet > p, const Address &addr, uint16_t protocol) | |
Create a queue disc item. | |
~QueueDiscItem () override | |
virtual void | AddHeader ()=0 |
Add the header to the packet. | |
Address | GetAddress () const |
Get the MAC address included in this item. | |
uint16_t | GetProtocol () const |
Get the L3 protocol included in this item. | |
Time | GetTimeStamp () const |
Get the timestamp included in this item. | |
uint8_t | GetTxQueueIndex () const |
Get the transmission queue index included in this item. | |
virtual uint32_t | Hash (uint32_t perturbation=0) const |
Computes the hash of various fields of the packet header. | |
virtual bool | Mark ()=0 |
Marks the packet as a substitute for dropping it, such as for Explicit Congestion Notification. | |
QueueDiscItem & | operator= (const QueueDiscItem &)=delete |
void | Print (std::ostream &os) const override |
Print the item contents. | |
void | SetTimeStamp (Time t) |
Set the timestamp included in this item. | |
void | SetTxQueueIndex (uint8_t txq) |
Set the transmission queue index to store in this item. | |
Public Member Functions inherited from ns3::QueueItem | |
QueueItem ()=delete | |
QueueItem (const QueueItem &)=delete | |
QueueItem (Ptr< Packet > p) | |
Create a queue item containing a packet. | |
virtual | ~QueueItem () |
Ptr< Packet > | GetPacket () const |
virtual uint32_t | GetSize () const |
Use this method (instead of GetPacket ()->GetSize ()) to get the packet size. | |
virtual bool | GetUint8Value (Uint8Values field, uint8_t &value) const |
Retrieve the value of a given field from the packet, if present. | |
QueueItem & | operator= (const QueueItem &)=delete |
virtual void | Print (std::ostream &os) const |
Print the item contents. | |
Public Member Functions inherited from ns3::SimpleRefCount< QueueItem > | |
SimpleRefCount () | |
Default constructor. | |
SimpleRefCount (const SimpleRefCount &o) | |
Copy constructor. | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. | |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
Assignment operator. | |
void | Ref () const |
Increment the reference count. | |
void | Unref () const |
Decrement the reference count. | |
Private Attributes | |
Address | m_address |
MAC destination address. | |
uint16_t | m_protocol |
L3 Protocol number. | |
Time | m_tstamp |
timestamp when the packet was enqueued | |
uint8_t | m_txq |
Transmission queue index. | |
Additional Inherited Members | |
Public Types inherited from ns3::QueueItem | |
typedef void(* | TracedCallback) (Ptr< const QueueItem > item) |
TracedCallback signature for Ptr<QueueItem> | |
enum | Uint8Values { IP_DSFIELD } |
1-byte fields of the packet whose value can be retrieved, if present More... | |
QueueDiscItem is the abstract base class for items that are stored in a queue disc.
It is derived from QueueItem (which only consists of a Ptr<Packet>) to additionally store the destination MAC address, the L3 protocol number and the transmission queue index,
Definition at line 132 of file queue-item.h.
Create a queue disc item.
p | the packet included in the created item. |
addr | the destination MAC address |
protocol | the L3 protocol number |
Definition at line 77 of file queue-item.cc.
References NS_LOG_FUNCTION.
|
override |
Definition at line 86 of file queue-item.cc.
References NS_LOG_FUNCTION.
|
delete |
|
delete |
|
pure virtual |
Add the header to the packet.
Subclasses may keep header and payload separate to allow manipulating the header, so this method allows to add the header to the packet before sending the packet to the device.
Implemented in ns3::ArpQueueDiscItem, ns3::Ipv4QueueDiscItem, ns3::Ipv6QueueDiscItem, AredQueueDiscTestItem, CobaltQueueDiscTestItem, CodelQueueDiscTestItem, FifoQueueDiscTestItem, PieQueueDiscTestItem, PrioQueueDiscTestItem, QdTestItem, RedQueueDiscTestItem, TbfQueueDiscTestItem, and QueueDiscTestItem.
Address ns3::QueueDiscItem::GetAddress | ( | ) | const |
Get the MAC address included in this item.
Definition at line 92 of file queue-item.cc.
References m_address, and NS_LOG_FUNCTION.
Referenced by ns3::ArpQueueDiscItem::Print(), ns3::Ipv4QueueDiscItem::Print(), and ns3::Ipv6QueueDiscItem::Print().
uint16_t ns3::QueueDiscItem::GetProtocol | ( | ) | const |
Get the L3 protocol included in this item.
Definition at line 99 of file queue-item.cc.
References m_protocol, and NS_LOG_FUNCTION.
Referenced by ns3::ArpQueueDiscItem::Print(), ns3::Ipv4QueueDiscItem::Print(), and ns3::Ipv6QueueDiscItem::Print().
Time ns3::QueueDiscItem::GetTimeStamp | ( | ) | const |
Get the timestamp included in this item.
Definition at line 120 of file queue-item.cc.
References m_tstamp, and NS_LOG_FUNCTION.
uint8_t ns3::QueueDiscItem::GetTxQueueIndex | ( | ) | const |
Get the transmission queue index included in this item.
Definition at line 106 of file queue-item.cc.
References m_txq, and NS_LOG_FUNCTION.
Referenced by ns3::ArpQueueDiscItem::Print(), ns3::Ipv4QueueDiscItem::Print(), and ns3::Ipv6QueueDiscItem::Print().
Computes the hash of various fields of the packet header.
This method just returns 0. Subclasses should implement a reasonable hash for their protocol type, such as hashing on the TCP/IP 5-tuple.
perturbation | hash perturbation value |
Reimplemented in ns3::ArpQueueDiscItem, ns3::Ipv4QueueDiscItem, and ns3::Ipv6QueueDiscItem.
Definition at line 143 of file queue-item.cc.
References NS_LOG_WARN.
Referenced by Mark().
|
pure virtual |
Marks the packet as a substitute for dropping it, such as for Explicit Congestion Notification.
Implemented in ns3::ArpQueueDiscItem, ns3::Ipv4QueueDiscItem, ns3::Ipv6QueueDiscItem, AredQueueDiscTestItem, CobaltQueueDiscTestItem, CodelQueueDiscTestItem, FifoQueueDiscTestItem, PieQueueDiscTestItem, PrioQueueDiscTestItem, QdTestItem, RedQueueDiscTestItem, TbfQueueDiscTestItem, and QueueDiscTestItem.
References Hash().
|
delete |
|
overridevirtual |
Print the item contents.
os | output stream in which the data should be printed. |
Reimplemented from ns3::QueueItem.
Definition at line 134 of file queue-item.cc.
References ns3::QueueItem::GetPacket(), m_address, m_protocol, and m_txq.
void ns3::QueueDiscItem::SetTimeStamp | ( | Time | t | ) |
Set the timestamp included in this item.
t | the timestamp to include in this item. |
Definition at line 127 of file queue-item.cc.
References m_tstamp, and NS_LOG_FUNCTION.
void ns3::QueueDiscItem::SetTxQueueIndex | ( | uint8_t | txq | ) |
Set the transmission queue index to store in this item.
txq | the transmission queue index to store in this item. |
Definition at line 113 of file queue-item.cc.
References m_txq, and NS_LOG_FUNCTION.
|
private |
MAC destination address.
Definition at line 221 of file queue-item.h.
Referenced by GetAddress(), and Print().
|
private |
L3 Protocol number.
Definition at line 222 of file queue-item.h.
Referenced by GetProtocol(), and Print().
|
private |
timestamp when the packet was enqueued
Definition at line 224 of file queue-item.h.
Referenced by GetTimeStamp(), and SetTimeStamp().
|
private |
Transmission queue index.
Definition at line 223 of file queue-item.h.
Referenced by GetTxQueueIndex(), Print(), and SetTxQueueIndex().