ns3::SatBaseEncapsulator Class Reference

A base encapsulator implementation which does not support encapsulation, fragmentation or packing. More...

#include "satellite-base-encapsulator.h"

+ Inheritance diagram for ns3::SatBaseEncapsulator:
+ Collaboration diagram for ns3::SatBaseEncapsulator:

Public Types

typedef Callback< void, Ptr< Packet >, Mac48Address, Mac48Address > ReceiveCallback
 Callback to send packet to lower layer. More...
 
typedef Callback< bool, Ptr< SatControlMessage >, const Address & > SendCtrlCallback
 Control msg sending callback. More...
 

Public Member Functions

 SatBaseEncapsulator ()
 Default constructor not used. More...
 
 SatBaseEncapsulator (Mac48Address encapAddress, Mac48Address decapAddress, Mac48Address sourceE2EAddress, Mac48Address destE2EAddress, uint8_t flowId, uint32_t additionalHeaderSize=0)
 Constructor. More...
 
virtual ~SatBaseEncapsulator ()
 Destructor for SatBaseEncapsulator. More...
 
virtual void DoDispose ()
 Dispose of this class instance. More...
 
virtual void EnquePdu (Ptr< Packet > p, Mac48Address dest)
 Enqueue a packet to txBuffer. More...
 
virtual Time GetHolDelay () const
 Get Head-of-Line packet buffering delay. More...
 
virtual uint32_t GetMinTxOpportunityInBytes () const
 Get minimum Tx opportunity in bytes, which takes the assumed header sizes into account. More...
 
Ptr< SatQueueGetQueue ()
 Get the queue instance. More...
 
virtual uint32_t GetTxBufferSizeInBytes () const
 Get the buffered packets for this encapsulator. More...
 
virtual Ptr< Packet > NotifyTxOpportunity (uint32_t bytes, uint32_t &bytesLeft, uint32_t &nextMinTxO)
 Notify a Tx opportunity to this base encapsulator. More...
 
virtual void ReceiveAck (Ptr< SatArqAckMessage > ack)
 Receive a control message (ARQ ACK) More...
 
virtual void ReceivePdu (Ptr< Packet > p)
 Receive a packet. More...
 
void SetCtrlMsgCallback (SatBaseEncapsulator::SendCtrlCallback cb)
 
void SetQueue (Ptr< SatQueue > queue)
 Set the used queue from outside. More...
 
void SetReceiveCallback (ReceiveCallback cb)
 Method to set receive callback. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Get the type ID. More...
 

Protected Attributes

uint32_t m_additionalHeaderSize
 Additional value in to take into account when pulling packets to represent E2E tags. More...
 
SendCtrlCallback m_ctrlCallback
 Callback to send control messages. More...
 
Mac48Address m_decapAddress
 
Mac48Address m_destE2EAddress
 
Mac48Address m_encapAddress
 Source and destination mac addresses. More...
 
uint8_t m_flowId
 Flow identifier. More...
 
ReceiveCallback m_rxCallback
 Receive callback. More...
 
Mac48Address m_sourceE2EAddress
 
Ptr< SatQueuem_txQueue
 Used queue in satellite encapsulator. More...
 

Detailed Description

A base encapsulator implementation which does not support encapsulation, fragmentation or packing.

Base encapsulator is used for flows which do not need encapsulation or fragmentation, such as lower layer control flows. Base encapsulator basically just stores packets in SatQueue and sends them as they are.

Return Link Encapsulator (RLE) and Generic Stream Encapsulator (GSE), as well as their ARQ supportive versions, are inherited from this base class.

Definition at line 50 of file satellite-base-encapsulator.h.

Member Typedef Documentation

◆ ReceiveCallback

typedef Callback<void, Ptr<Packet>, Mac48Address, Mac48Address> ns3::SatBaseEncapsulator::ReceiveCallback

Callback to send packet to lower layer.

Parameters
Ptr<Packet>the packet received
Mac48AddressSource MAC address
Mac48AddressDestination MAC address

Definition at line 97 of file satellite-base-encapsulator.h.

◆ SendCtrlCallback

typedef Callback<bool, Ptr<SatControlMessage>, const Address&> ns3::SatBaseEncapsulator::SendCtrlCallback

Control msg sending callback.

Parameters
msgthe message send
addressPacket destination address
Returns
bool

Definition at line 105 of file satellite-base-encapsulator.h.

Constructor & Destructor Documentation

◆ SatBaseEncapsulator() [1/2]

ns3::SatBaseEncapsulator::SatBaseEncapsulator ( )

Default constructor not used.

Default constructor is not meant to be used!

Definition at line 37 of file satellite-base-encapsulator.cc.

◆ SatBaseEncapsulator() [2/2]

ns3::SatBaseEncapsulator::SatBaseEncapsulator ( Mac48Address  encapAddress,
Mac48Address  decapAddress,
Mac48Address  sourceE2EAddress,
Mac48Address  destE2EAddress,
uint8_t  flowId,
uint32_t  additionalHeaderSize = 0 
)

Constructor.

Parameters
encapAddressMAC addressd of encapsulator
decapAddressMAC addressd of decapsulator
sourceE2EAddressE2E source MAC addressd of packets (used to set SatAddressE2ETag)
destE2EAddressE2E destination MAC addressd of packets (used to set SatAddressE2ETag)
flowIdFlow identifier
additionalHeaderSizeAdditional value in to take into account when pulling packets to represent E2E tags

Definition at line 50 of file satellite-base-encapsulator.cc.

◆ ~SatBaseEncapsulator()

ns3::SatBaseEncapsulator::~SatBaseEncapsulator ( )
virtual

Destructor for SatBaseEncapsulator.

Definition at line 66 of file satellite-base-encapsulator.cc.

References m_rxCallback, and m_txQueue.

Member Function Documentation

◆ DoDispose()

void ns3::SatBaseEncapsulator::DoDispose ( void  )
virtual

◆ EnquePdu()

void ns3::SatBaseEncapsulator::EnquePdu ( Ptr< Packet >  p,
Mac48Address  dest 
)
virtual

Enqueue a packet to txBuffer.

Parameters
pTo be buffered packet
destTarget MAC address

Reimplemented in ns3::SatReturnLinkEncapsulator, and ns3::SatGenericStreamEncapsulator.

Definition at line 93 of file satellite-base-encapsulator.cc.

References m_encapAddress, m_flowId, m_txQueue, ns3::SatMacTag::SetDestAddress(), ns3::SatFlowIdTag::SetFlowId(), and ns3::SatMacTag::SetSourceAddress().

+ Here is the call graph for this function:

◆ GetHolDelay()

Time ns3::SatBaseEncapsulator::GetHolDelay ( ) const
virtual

Get Head-of-Line packet buffering delay.

Returns
Time HoL buffering delay

Definition at line 215 of file satellite-base-encapsulator.cc.

References ns3::SatTimeTag::GetSenderTimestamp(), and m_txQueue.

+ Here is the call graph for this function:

◆ GetMinTxOpportunityInBytes()

uint32_t ns3::SatBaseEncapsulator::GetMinTxOpportunityInBytes ( ) const
virtual

Get minimum Tx opportunity in bytes, which takes the assumed header sizes into account.

Returns
uint32_t minimum tx opportunity

Reimplemented in ns3::SatReturnLinkEncapsulator, and ns3::SatGenericStreamEncapsulator.

Definition at line 267 of file satellite-base-encapsulator.cc.

References m_txQueue.

◆ GetQueue()

Ptr< SatQueue > ns3::SatBaseEncapsulator::GetQueue ( )

Get the queue instance.

Returns
queue

Definition at line 259 of file satellite-base-encapsulator.cc.

References m_txQueue.

◆ GetTxBufferSizeInBytes()

uint32_t ns3::SatBaseEncapsulator::GetTxBufferSizeInBytes ( ) const
virtual

Get the buffered packets for this encapsulator.

Returns
uint32_t buffered bytes

Reimplemented in ns3::SatReturnLinkEncapsulatorArq, and ns3::SatGenericStreamEncapsulatorArq.

Definition at line 207 of file satellite-base-encapsulator.cc.

References m_txQueue.

Referenced by ns3::SatGenericStreamEncapsulator::NotifyTxOpportunity(), and ns3::SatReturnLinkEncapsulator::NotifyTxOpportunity().

+ Here is the caller graph for this function:

◆ GetTypeId()

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

Get the type ID.

Returns
the object TypeId

Definition at line 74 of file satellite-base-encapsulator.cc.

◆ NotifyTxOpportunity()

Ptr< Packet > ns3::SatBaseEncapsulator::NotifyTxOpportunity ( uint32_t  bytes,
uint32_t &  bytesLeft,
uint32_t &  nextMinTxO 
)
virtual

Notify a Tx opportunity to this base encapsulator.

Note, that this class does not do encapsulator nor do not support fragmentation.

Parameters
bytesNotified Tx opportunity bytes from lower layer
bytesLeftBytes left after this TxOpportunity in txBuffer
&nextMinTxOMinimum TxO after this TxO
Returns
An raw control PDU

Reimplemented in ns3::SatReturnLinkEncapsulator, ns3::SatReturnLinkEncapsulatorArq, ns3::SatGenericStreamEncapsulator, and ns3::SatGenericStreamEncapsulatorArq.

Definition at line 126 of file satellite-base-encapsulator.cc.

References m_flowId, and m_txQueue.

◆ ReceiveAck()

void ns3::SatBaseEncapsulator::ReceiveAck ( Ptr< SatArqAckMessage ack)
virtual

Receive a control message (ARQ ACK)

Parameters
ackControl message received (e.g. ARQ ACK)

The base encapsulator should not be used at receiving control packets at all! This functionality is implemented in the inherited classes.

Reimplemented in ns3::SatReturnLinkEncapsulator, ns3::SatReturnLinkEncapsulatorArq, and ns3::SatGenericStreamEncapsulatorArq.

Definition at line 195 of file satellite-base-encapsulator.cc.

◆ ReceivePdu()

void ns3::SatBaseEncapsulator::ReceivePdu ( Ptr< Packet >  p)
virtual

Receive a packet.

Note, that base encapsulator does not support packet reception, since it assumes that packet receptions are terminated already at lower layers.

Parameters
ppacket pointer received from lower layer

The base encapsulator should not be used at receiving data packets at all! This functionality is implemented in the inherited classes.

Reimplemented in ns3::SatReturnLinkEncapsulator, ns3::SatReturnLinkEncapsulatorArq, ns3::SatGenericStreamEncapsulator, and ns3::SatGenericStreamEncapsulatorArq.

Definition at line 177 of file satellite-base-encapsulator.cc.

References m_decapAddress, m_encapAddress, m_flowId, and m_rxCallback.

◆ SetCtrlMsgCallback()

void ns3::SatBaseEncapsulator::SetCtrlMsgCallback ( SatBaseEncapsulator::SendCtrlCallback  cb)
Parameters
cbcallback to send control messages.

Definition at line 243 of file satellite-base-encapsulator.cc.

References m_ctrlCallback.

◆ SetQueue()

void ns3::SatBaseEncapsulator::SetQueue ( Ptr< SatQueue queue)

Set the used queue from outside.

Parameters
queueTransmission queue

Definition at line 251 of file satellite-base-encapsulator.cc.

References m_txQueue.

◆ SetReceiveCallback()

void ns3::SatBaseEncapsulator::SetReceiveCallback ( ReceiveCallback  cb)

Method to set receive callback.

Parameters
cbcallback to invoke whenever a packet has been received and must be forwarded to the higher layers.

Definition at line 235 of file satellite-base-encapsulator.cc.

References m_rxCallback.

Member Data Documentation

◆ m_additionalHeaderSize

uint32_t ns3::SatBaseEncapsulator::m_additionalHeaderSize
protected

Additional value in to take into account when pulling packets to represent E2E tags.

Definition at line 208 of file satellite-base-encapsulator.h.

Referenced by ns3::SatGenericStreamEncapsulator::NotifyTxOpportunity(), and ns3::SatReturnLinkEncapsulator::NotifyTxOpportunity().

◆ m_ctrlCallback

SendCtrlCallback ns3::SatBaseEncapsulator::m_ctrlCallback
protected

◆ m_decapAddress

◆ m_destE2EAddress

◆ m_encapAddress

◆ m_flowId

◆ m_rxCallback

◆ m_sourceE2EAddress

◆ m_txQueue


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