A Discrete-Event Network Simulator
API
ns3::TagBuffer Class Reference

read and write tag data More...

#include "tag-buffer.h"

Public Member Functions

 TagBuffer (uint8_t *start, uint8_t *end)
 Constructor. More...
 
void CopyFrom (TagBuffer o)
 Copy the nternal structure of another TagBuffer. More...
 
void Read (uint8_t *buffer, uint32_t size)
 
double ReadDouble (void)
 
TAG_BUFFER_INLINE uint16_t ReadU16 (void)
 
TAG_BUFFER_INLINE uint32_t ReadU32 (void)
 
uint64_t ReadU64 (void)
 
TAG_BUFFER_INLINE uint8_t ReadU8 (void)
 
void TrimAtEnd (uint32_t trim)
 Trim some space from the end. More...
 
void Write (const uint8_t *buffer, uint32_t size)
 
void WriteDouble (double v)
 
TAG_BUFFER_INLINE void WriteU16 (uint16_t v)
 
TAG_BUFFER_INLINE void WriteU32 (uint32_t v)
 
void WriteU64 (uint64_t v)
 
TAG_BUFFER_INLINE void WriteU8 (uint8_t v)
 

Private Attributes

uint8_t * m_current
 current TagBuffer position More...
 
uint8_t * m_end
 end TagBuffer position More...
 

Detailed Description

read and write tag data

This class allows subclasses of the ns3::Tag base class to serialize and deserialize their data through a stream-like API. This class keeps track of the "current" point in the buffer and advances that "current" point every time data is written. The in-memory format of the data written by this class is unspecified.

If the user attempts to write more data in the buffer than he allocated with Tag::GetSerializedSize, he will trigger an NS_ASSERT error.

Definition at line 51 of file tag-buffer.h.

Constructor & Destructor Documentation

◆ TagBuffer()

ns3::TagBuffer::TagBuffer ( uint8_t *  start,
uint8_t *  end 
)

Constructor.

Parameters
startstart position
endend position

Definition at line 183 of file tag-buffer.cc.

References NS_LOG_FUNCTION, and visualizer.core::start().

+ Here is the call graph for this function:

Member Function Documentation

◆ CopyFrom()

void ns3::TagBuffer::CopyFrom ( TagBuffer  o)

Copy the nternal structure of another TagBuffer.

Parameters
othe TagBuffer to copy from

Definition at line 199 of file tag-buffer.cc.

References m_current, m_end, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by ns3::ByteTagList::Add(), ns3::ByteTagList::AddAtEnd(), and ns3::ByteTagList::AddAtStart().

+ Here is the caller graph for this function:

◆ Read()

void ns3::TagBuffer::Read ( uint8_t *  buffer,
uint32_t  size 
)
Parameters
buffera pointer to the buffer where data should be written.
sizethe number of bytes to read.

Read the number of bytes requested, advance the "current" point by the number of bytes read, return.

Definition at line 176 of file tag-buffer.cc.

References m_current, m_end, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by ns3::SimpleTag::Deserialize(), ns3::RlcTag::Deserialize(), ns3::PdcpTag::Deserialize(), ns3::Ipv4FlowProbeTag::Deserialize(), ns3::AmpduTag::Deserialize(), ns3::HigherLayerTxVectorTag::Deserialize(), TimestampTag::Deserialize(), ns3::Ipv4PacketInfoTag::Deserialize(), ns3::Ipv6PacketInfoTag::Deserialize(), ns3::Address::Deserialize(), ns3::DeviceNameTag::Deserialize(), and ns3::ByteTagList::Serialize().

+ Here is the caller graph for this function:

◆ ReadDouble()

double ns3::TagBuffer::ReadDouble ( void  )
Returns
the value read

Read a double, advance the "current" point by the size of the data read, and, return the value read.

Definition at line 164 of file tag-buffer.cc.

References NS_LOG_FUNCTION, and ReadU8().

Referenced by ns3::SnrTag::Deserialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReadU16()

uint16_t ns3::TagBuffer::ReadU16 ( void  )
Returns
the value read

Read two bytes, advance the "current" point by two, and return the value read.

Definition at line 205 of file tag-buffer.h.

References data, and ReadU8().

Referenced by ns3::SimpleTag::Deserialize(), ns3::LtePhyTag::Deserialize(), ns3::EpsBearerTag::Deserialize(), and ns3::LteRadioBearerTag::Deserialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReadU32()

uint32_t ns3::TagBuffer::ReadU32 ( void  )
Returns
the value read

Read four bytes, advance the "current" point by four, and return the value read.

Definition at line 215 of file tag-buffer.h.

References data, and ReadU8().

Referenced by ns3::FlowIdTag::Deserialize(), ns3::Ipv4FlowProbeTag::Deserialize(), ns3::Ipv6FlowProbeTag::Deserialize(), ns3::PyVizPacketTag::Deserialize(), ns3::dot11s::HwmpTag::Deserialize(), ns3::dsdv::DeferredRouteOutputTag::Deserialize(), ns3::Ipv4PacketInfoTag::Deserialize(), ns3::aodv::DeferredRouteOutputTag::Deserialize(), and ns3::ByteTagList::Iterator::PrepareForNext().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReadU64()

uint64_t ns3::TagBuffer::ReadU64 ( void  )
Returns
the value read

Read eight bytes, advance the "current" point by eight, and return the value read.

Definition at line 134 of file tag-buffer.cc.

References data, NS_LOG_FUNCTION, and ReadU8().

Referenced by ns3::DelayJitterEstimationTimestampTag::Deserialize(), IPv4TestTag::Deserialize(), IPv6TestTag::Deserialize(), and ns3::AnimByteTag::Deserialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ReadU8()

◆ TrimAtEnd()

void ns3::TagBuffer::TrimAtEnd ( uint32_t  trim)

Trim some space from the end.

Parameters
trimspace to remove

Definition at line 191 of file tag-buffer.cc.

References m_current, m_end, NS_ASSERT, and NS_LOG_FUNCTION.

Referenced by ns3::ByteTagList::Iterator::Next().

+ Here is the caller graph for this function:

◆ Write()

void ns3::TagBuffer::Write ( const uint8_t *  buffer,
uint32_t  size 
)
Parameters
buffera pointer to data to write
sizethe size of the data to write

Write all the input data and advance the "current" point by the size of the data written.

Definition at line 125 of file tag-buffer.cc.

References NS_LOG_FUNCTION, and WriteU8().

Referenced by ns3::ByteTagList::Deserialize(), ns3::SimpleTag::Serialize(), ns3::RlcTag::Serialize(), ns3::PdcpTag::Serialize(), ns3::Ipv4FlowProbeTag::Serialize(), ns3::AmpduTag::Serialize(), ns3::HigherLayerTxVectorTag::Serialize(), TimestampTag::Serialize(), ns3::Ipv4PacketInfoTag::Serialize(), ns3::Ipv6PacketInfoTag::Serialize(), ns3::Address::Serialize(), and ns3::DeviceNameTag::Serialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteDouble()

void ns3::TagBuffer::WriteDouble ( double  v)
Parameters
vthe value to write

Write a double and advance the "current" point by the size of the data written.

Definition at line 115 of file tag-buffer.cc.

References NS_LOG_FUNCTION, and WriteU8().

Referenced by ns3::SnrTag::Serialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteU16()

void ns3::TagBuffer::WriteU16 ( uint16_t  v)
Parameters
vthe value to write

Write two bytes and advance the "current" point by two.

Definition at line 180 of file tag-buffer.h.

References data, and WriteU8().

Referenced by ns3::SimpleTag::Serialize(), ns3::LtePhyTag::Serialize(), ns3::EpsBearerTag::Serialize(), and ns3::LteRadioBearerTag::Serialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteU32()

void ns3::TagBuffer::WriteU32 ( uint32_t  v)
Parameters
vthe value to write

Write four bytes and advance the "current" point by four.

Definition at line 186 of file tag-buffer.h.

References data, and WriteU8().

Referenced by ns3::ByteTagList::Add(), ns3::FlowIdTag::Serialize(), ns3::Ipv4FlowProbeTag::Serialize(), ns3::Ipv6FlowProbeTag::Serialize(), ns3::PyVizPacketTag::Serialize(), ns3::dsdv::DeferredRouteOutputTag::Serialize(), ns3::dot11s::HwmpTag::Serialize(), ns3::Ipv4PacketInfoTag::Serialize(), and ns3::aodv::DeferredRouteOutputTag::Serialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteU64()

void ns3::TagBuffer::WriteU64 ( uint64_t  v)
Parameters
vthe value to write

Write eight bytes and advance the "current" point by eight.

Definition at line 102 of file tag-buffer.cc.

References data, NS_LOG_FUNCTION, and WriteU8().

Referenced by ns3::DelayJitterEstimationTimestampTag::Serialize(), IPv4TestTag::Serialize(), IPv6TestTag::Serialize(), and ns3::AnimByteTag::Serialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ WriteU8()

Member Data Documentation

◆ m_current

uint8_t* ns3::TagBuffer::m_current
private

current TagBuffer position

Definition at line 159 of file tag-buffer.h.

Referenced by CopyFrom(), Read(), ReadU8(), TrimAtEnd(), and WriteU8().

◆ m_end

uint8_t* ns3::TagBuffer::m_end
private

end TagBuffer position

Definition at line 160 of file tag-buffer.h.

Referenced by CopyFrom(), Read(), ReadU8(), TrimAtEnd(), and WriteU8().


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