A Discrete-Event Network Simulator
API
Classes | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ns3::WimaxMacQueue Class Reference

Class implementing the device packet queue. More...

#include "wimax-mac-queue.h"

+ Inheritance diagram for ns3::WimaxMacQueue:

Classes

struct  QueueElement
 QueueElement structure. More...
 

Public Member Functions

 WimaxMacQueue (void)
 
 WimaxMacQueue (uint32_t maxSize)
 Constructor. More...
 
 ~WimaxMacQueue (void)
 
bool CheckForFragmentation (MacHeaderType::HeaderType packetType)
 Check for fragmentation of the first packet of the specified type. More...
 
Ptr< PacketDequeue (MacHeaderType::HeaderType packetType)
 Dequeue a packet of type packetType from the queue. More...
 
Ptr< PacketDequeue (MacHeaderType::HeaderType packetType, uint32_t availableByte)
 Dequeue a fragment of size availableByte from the queue. More...
 
bool Enqueue (Ptr< Packet > packet, const MacHeaderType &hdrType, const GenericMacHeader &hdr)
 Enqueue a packet. More...
 
uint32_t GetFirstPacketHdrSize (MacHeaderType::HeaderType packetType)
 Get first packet header size of the specified type. More...
 
uint32_t GetFirstPacketPayloadSize (MacHeaderType::HeaderType packetType)
 Get first packet payload size of the specified type. More...
 
uint32_t GetFirstPacketRequiredByte (MacHeaderType::HeaderType packetType)
 Get required number of bytes to hold first packet of packetType. More...
 
uint32_t GetMaxSize (void) const
 
uint32_t GetNBytes (void) const
 Get number of bytes in queue. More...
 
const WimaxMacQueue::PacketQueueGetPacketQueue (void) const
 Get packet queue function. More...
 
uint32_t GetQueueLengthWithMACOverhead (void)
 Get queue length considering also the MAC overhead. More...
 
uint32_t GetSize (void) const
 Get size of queue. More...
 
bool IsEmpty (void) const
 Check if queue is empty. More...
 
bool IsEmpty (MacHeaderType::HeaderType packetType) const
 Exclusively for SS. More...
 
Ptr< PacketPeek (GenericMacHeader &hdr) const
 Exclusively for BS. More...
 
Ptr< PacketPeek (GenericMacHeader &hdr, Time &timeStamp) const
 Exclusively for BS. More...
 
Ptr< PacketPeek (MacHeaderType::HeaderType packetType) const
 Two versions for SS without Generic MAC Header parameter, as SS's scheduler does not require to know the CID in Generic MAC Header. More...
 
Ptr< PacketPeek (MacHeaderType::HeaderType packetType, Time &timeStamp) const
 Two versions for SS without Generic MAC Header parameter, as SS's scheduler does not require to know the CID in Generic MAC Header. More...
 
void SetFragmentation (MacHeaderType::HeaderType packetType)
 Set fragmentation function. More...
 
void SetFragmentNumber (MacHeaderType::HeaderType packetType)
 Set fragment number for first packet of type packetType. More...
 
void SetFragmentOffset (MacHeaderType::HeaderType packetType, uint32_t offset)
 Set fragment offset for first packet of type packetType. More...
 
void SetMaxSize (uint32_t maxSize)
 set the maximum queue size More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
void Initialize (void)
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized (void) 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)
 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...
 
- 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 erros. 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 (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Private Types

typedef std::deque< QueueElementPacketQueue
 PacketQueue typedef. More...
 

Private Member Functions

WimaxMacQueue::QueueElement Front (MacHeaderType::HeaderType packetType) const
 
In the case of non-UGS service flows at the SS side the queue will store both data packets and bandwidth request packets. More...
 
void Pop (MacHeaderType::HeaderType packetType)
 Pop function. More...
 

Private Attributes

uint32_t m_bytes
 bytes More...
 
uint32_t m_maxSize
 maximum size More...
 
uint32_t m_nrDataPackets
 number data packets More...
 
uint32_t m_nrRequestPackets
 number request packets More...
 
PacketQueue m_queue
 the queue More...
 
TracedCallback< Ptr< const Packet > > m_traceDequeue
 dequeue trace callback More...
 
TracedCallback< Ptr< const Packet > > m_traceDrop
 drop trace callback More...
 
TracedCallback< Ptr< const Packet > > m_traceEnqueue
 enqueue trace callback More...
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoDispose (void)
 Destructor implementation. More...
 
virtual void DoInitialize (void)
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate (void)
 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 (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

Class implementing the device packet queue.


Config Paths

ns3::WimaxMacQueue is accessible through the following paths with Config::Set and Config::Connect:

Attributes

TraceSources

Size of this type is 168 bytes (on a 64-bit architecture).

Definition at line 38 of file wimax-mac-queue.h.

Member Typedef Documentation

◆ PacketQueue

typedef std::deque<QueueElement> ns3::WimaxMacQueue::PacketQueue
private

PacketQueue typedef.

Definition at line 258 of file wimax-mac-queue.h.

Constructor & Destructor Documentation

◆ WimaxMacQueue() [1/2]

ns3::WimaxMacQueue::WimaxMacQueue ( void  )

Definition at line 106 of file wimax-mac-queue.cc.

◆ WimaxMacQueue() [2/2]

ns3::WimaxMacQueue::WimaxMacQueue ( uint32_t  maxSize)

Constructor.

Parameters
maxSizemaximum size of queue

Definition at line 114 of file wimax-mac-queue.cc.

◆ ~WimaxMacQueue()

ns3::WimaxMacQueue::~WimaxMacQueue ( void  )

Definition at line 122 of file wimax-mac-queue.cc.

Member Function Documentation

◆ CheckForFragmentation()

bool ns3::WimaxMacQueue::CheckForFragmentation ( MacHeaderType::HeaderType  packetType)

Check for fragmentation of the first packet of the specified type.

Parameters
packetTypethe packet type
Returns
true if fragmented

Definition at line 496 of file wimax-mac-queue.cc.

References ns3::MacHeaderType::GetType(), ns3::WimaxMacQueue::QueueElement::m_fragmentation, ns3::WimaxMacQueue::QueueElement::m_hdrType, m_queue, and NS_LOG_INFO.

Referenced by GetFirstPacketHdrSize(), GetFirstPacketPayloadSize(), and GetQueueLengthWithMACOverhead().

◆ Dequeue() [1/2]

Ptr< Packet > ns3::WimaxMacQueue::Dequeue ( MacHeaderType::HeaderType  packetType)

◆ Dequeue() [2/2]

Ptr< Packet > ns3::WimaxMacQueue::Dequeue ( MacHeaderType::HeaderType  packetType,
uint32_t  availableByte 
)

◆ Enqueue()

bool ns3::WimaxMacQueue::Enqueue ( Ptr< Packet packet,
const MacHeaderType hdrType,
const GenericMacHeader hdr 
)

Enqueue a packet.

Parameters
packetthe packet to enqueue
hdrTypethe mac header type of the packet
hdrthe header of the packet
Returns
true if successful

Definition at line 139 of file wimax-mac-queue.cc.

References ns3::WimaxMacQueue::QueueElement::GetSize(), ns3::MacHeaderType::GetType(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, m_bytes, m_maxSize, m_nrDataPackets, m_nrRequestPackets, m_queue, m_traceDrop, m_traceEnqueue, and ns3::Simulator::Now().

◆ Front()

WimaxMacQueue::QueueElement ns3::WimaxMacQueue::Front ( MacHeaderType::HeaderType  packetType) const
private


In the case of non-UGS service flows at the SS side the queue will store both data packets and bandwidth request packets.

The two are distinguished by their headers. The below two functions are for this purpose exclusively. The Front function returns the first packet of a specific packet type from the queue (which may not necessarily be at the front of the queue), and the Pop function pops that elements.

Parameters
packetTypethe type of the packet
Returns
the first packet in the queue of the specified type

Definition at line 434 of file wimax-mac-queue.cc.

References ns3::MacHeaderType::GetType(), ns3::WimaxMacQueue::QueueElement::m_hdrType, and m_queue.

Referenced by Dequeue(), and Peek().

◆ GetFirstPacketHdrSize()

uint32_t ns3::WimaxMacQueue::GetFirstPacketHdrSize ( MacHeaderType::HeaderType  packetType)

◆ GetFirstPacketPayloadSize()

uint32_t ns3::WimaxMacQueue::GetFirstPacketPayloadSize ( MacHeaderType::HeaderType  packetType)

Get first packet payload size of the specified type.

Parameters
packetTypethe packet type
Returns
the first packet payload size

Definition at line 558 of file wimax-mac-queue.cc.

References CheckForFragmentation(), ns3::Packet::GetSize(), ns3::MacHeaderType::GetType(), ns3::WimaxMacQueue::QueueElement::m_fragmentOffset, ns3::WimaxMacQueue::QueueElement::m_hdrType, ns3::WimaxMacQueue::QueueElement::m_packet, m_queue, and NS_LOG_INFO.

Referenced by GetFirstPacketRequiredByte().

◆ GetFirstPacketRequiredByte()

uint32_t ns3::WimaxMacQueue::GetFirstPacketRequiredByte ( MacHeaderType::HeaderType  packetType)

Get required number of bytes to hold first packet of packetType.

Parameters
packetTypethe packet type
Returns
the sum of the first packet header and payload (of specified type)

Definition at line 589 of file wimax-mac-queue.cc.

References GetFirstPacketHdrSize(), GetFirstPacketPayloadSize(), and NS_LOG_INFO.

◆ GetMaxSize()

uint32_t ns3::WimaxMacQueue::GetMaxSize ( void  ) const
Returns
the maximum queue size

Definition at line 133 of file wimax-mac-queue.cc.

References m_maxSize.

Referenced by GetTypeId().

◆ GetNBytes()

uint32_t ns3::WimaxMacQueue::GetNBytes ( void  ) const

Get number of bytes in queue.

Returns
the number of bytes

Definition at line 415 of file wimax-mac-queue.cc.

References m_bytes.

Referenced by GetQueueLengthWithMACOverhead().

◆ GetPacketQueue()

const WimaxMacQueue::PacketQueue & ns3::WimaxMacQueue::GetPacketQueue ( void  ) const

Get packet queue function.

Returns
the packet queue

Definition at line 490 of file wimax-mac-queue.cc.

References m_queue.

◆ GetQueueLengthWithMACOverhead()

uint32_t ns3::WimaxMacQueue::GetQueueLengthWithMACOverhead ( void  )

Get queue length considering also the MAC overhead.

Returns
queue length

Definition at line 420 of file wimax-mac-queue.cc.

References CheckForFragmentation(), GetNBytes(), GetSize(), and ns3::MacHeaderType::HEADER_TYPE_GENERIC.

◆ GetSize()

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

Get size of queue.

Returns
the size

Definition at line 409 of file wimax-mac-queue.cc.

References m_queue.

Referenced by GetQueueLengthWithMACOverhead().

◆ GetTypeId()

TypeId ns3::WimaxMacQueue::GetTypeId ( void  )
static

◆ IsEmpty() [1/2]

bool ns3::WimaxMacQueue::IsEmpty ( void  ) const

Check if queue is empty.

Returns
true if empty

Definition at line 469 of file wimax-mac-queue.cc.

References m_queue.

Referenced by Dequeue(), and Peek().

◆ IsEmpty() [2/2]

bool ns3::WimaxMacQueue::IsEmpty ( MacHeaderType::HeaderType  packetType) const

Exclusively for SS.

Returns
true if queue is empty of type packetType
Parameters
packetTypepacket type to check

Definition at line 475 of file wimax-mac-queue.cc.

References ns3::MacHeaderType::HEADER_TYPE_GENERIC, m_nrDataPackets, and m_nrRequestPackets.

◆ Peek() [1/4]

Ptr< Packet > ns3::WimaxMacQueue::Peek ( GenericMacHeader hdr) const

Exclusively for BS.

Two versions of Peek function (with Generic MAC Header as parameter) only for BS, as BS's scheduler needs to know the CID in Generic MAC Header.

Parameters
hdrthe header of the packet
Returns
the first packet in the queue

Definition at line 330 of file wimax-mac-queue.cc.

References ns3::Packet::AddHeader(), ns3::Packet::Copy(), IsEmpty(), ns3::WimaxMacQueue::QueueElement::m_hdr, ns3::WimaxMacQueue::QueueElement::m_packet, and m_queue.

◆ Peek() [2/4]

Ptr< Packet > ns3::WimaxMacQueue::Peek ( GenericMacHeader hdr,
Time timeStamp 
) const

Exclusively for BS.

Two versions of Peek function (with Generic MAC Header as parameter) only for BS, as BS's scheduler needs to know the CID in Generic MAC Header.

Parameters
hdrthe header of the packet
timeStampthe timestamp of the packet
Returns
the first packet in the queue

Definition at line 347 of file wimax-mac-queue.cc.

References ns3::Packet::AddHeader(), ns3::Packet::Copy(), IsEmpty(), ns3::WimaxMacQueue::QueueElement::m_hdr, ns3::WimaxMacQueue::QueueElement::m_packet, m_queue, and ns3::WimaxMacQueue::QueueElement::m_timeStamp.

◆ Peek() [3/4]

Ptr< Packet > ns3::WimaxMacQueue::Peek ( MacHeaderType::HeaderType  packetType) const

Two versions for SS without Generic MAC Header parameter, as SS's scheduler does not require to know the CID in Generic MAC Header.

Parameters
packetTypethe type of the packet
Returns
the first packet in the queue

Definition at line 365 of file wimax-mac-queue.cc.

References ns3::Packet::AddHeader(), ns3::Packet::Copy(), Front(), ns3::MacHeaderType::GetType(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, IsEmpty(), ns3::WimaxMacQueue::QueueElement::m_hdr, ns3::WimaxMacQueue::QueueElement::m_hdrType, and ns3::WimaxMacQueue::QueueElement::m_packet.

◆ Peek() [4/4]

Ptr< Packet > ns3::WimaxMacQueue::Peek ( MacHeaderType::HeaderType  packetType,
Time timeStamp 
) const

Two versions for SS without Generic MAC Header parameter, as SS's scheduler does not require to know the CID in Generic MAC Header.

Parameters
packetTypethe type of the packet
timeStampthe timestamp of the packet
Returns
the first packet in the queue

Definition at line 386 of file wimax-mac-queue.cc.

References ns3::Packet::AddHeader(), ns3::Packet::Copy(), Front(), ns3::MacHeaderType::GetType(), ns3::MacHeaderType::HEADER_TYPE_GENERIC, IsEmpty(), ns3::WimaxMacQueue::QueueElement::m_hdr, ns3::WimaxMacQueue::QueueElement::m_hdrType, ns3::WimaxMacQueue::QueueElement::m_packet, and ns3::WimaxMacQueue::QueueElement::m_timeStamp.

◆ Pop()

void ns3::WimaxMacQueue::Pop ( MacHeaderType::HeaderType  packetType)
private

Pop function.

Parameters
packetTypethe packet type

Definition at line 452 of file wimax-mac-queue.cc.

References ns3::MacHeaderType::GetType(), ns3::WimaxMacQueue::QueueElement::m_hdrType, and m_queue.

Referenced by Dequeue().

◆ SetFragmentation()

void ns3::WimaxMacQueue::SetFragmentation ( MacHeaderType::HeaderType  packetType)

Set fragmentation function.

Set fragmentation state for first packet of type packetType

Parameters
packetTypepacketType to check

Definition at line 602 of file wimax-mac-queue.cc.

References m_queue.

Referenced by Dequeue().

◆ SetFragmentNumber()

void ns3::WimaxMacQueue::SetFragmentNumber ( MacHeaderType::HeaderType  packetType)

Set fragment number for first packet of type packetType.

Parameters
packetTypepacketType to check

Definition at line 616 of file wimax-mac-queue.cc.

References m_queue.

Referenced by Dequeue().

◆ SetFragmentOffset()

void ns3::WimaxMacQueue::SetFragmentOffset ( MacHeaderType::HeaderType  packetType,
uint32_t  offset 
)

Set fragment offset for first packet of type packetType.

Parameters
packetTypepacketType to check
offsetoffset value to set

Definition at line 630 of file wimax-mac-queue.cc.

References m_queue.

Referenced by Dequeue().

◆ SetMaxSize()

void ns3::WimaxMacQueue::SetMaxSize ( uint32_t  maxSize)

set the maximum queue size

Parameters
maxSizethe max queue size

Definition at line 127 of file wimax-mac-queue.cc.

References m_maxSize.

Referenced by GetTypeId().

Member Data Documentation

◆ m_bytes

uint32_t ns3::WimaxMacQueue::m_bytes
private

bytes

Definition at line 261 of file wimax-mac-queue.h.

Referenced by Dequeue(), Enqueue(), and GetNBytes().

◆ m_maxSize

uint32_t ns3::WimaxMacQueue::m_maxSize
private

maximum size

Definition at line 260 of file wimax-mac-queue.h.

Referenced by Enqueue(), GetMaxSize(), and SetMaxSize().

◆ m_nrDataPackets

uint32_t ns3::WimaxMacQueue::m_nrDataPackets
private

number data packets

Definition at line 262 of file wimax-mac-queue.h.

Referenced by Dequeue(), Enqueue(), and IsEmpty().

◆ m_nrRequestPackets

uint32_t ns3::WimaxMacQueue::m_nrRequestPackets
private

number request packets

Definition at line 263 of file wimax-mac-queue.h.

Referenced by Dequeue(), Enqueue(), and IsEmpty().

◆ m_queue

PacketQueue ns3::WimaxMacQueue::m_queue
private

◆ m_traceDequeue

TracedCallback<Ptr<const Packet> > ns3::WimaxMacQueue::m_traceDequeue
private

dequeue trace callback

Definition at line 266 of file wimax-mac-queue.h.

Referenced by Dequeue(), and GetTypeId().

◆ m_traceDrop

TracedCallback<Ptr<const Packet> > ns3::WimaxMacQueue::m_traceDrop
private

drop trace callback

Definition at line 267 of file wimax-mac-queue.h.

Referenced by Enqueue(), and GetTypeId().

◆ m_traceEnqueue

TracedCallback<Ptr<const Packet> > ns3::WimaxMacQueue::m_traceEnqueue
private

enqueue trace callback

Definition at line 265 of file wimax-mac-queue.h.

Referenced by Enqueue(), and GetTypeId().


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