ns-3
ns3::PbbMessage Class Reference

A message within a PbbPacket packet. More...

#include <packetbb.h>

Inheritance diagram for ns3::PbbMessage:
Collaboration diagram for ns3::PbbMessage:

List of all members.

Public Types

typedef std::list< Ptr< PbbTlv >
>::iterator 
TlvIterator
typedef std::list< Ptr< PbbTlv >
>::const_iterator 
ConstTlvIterator
typedef std::list< Ptr
< PbbAddressBlock >
>::iterator 
AddressBlockIterator
typedef std::list< Ptr
< PbbAddressBlock >
>::const_iterator 
ConstAddressBlockIterator

Public Member Functions

void SetType (uint8_t type)
 Sets the type for this message.
uint8_t GetType (void) const
void SetOriginatorAddress (Address address)
 Sets the address for the node that created this packet.
Address GetOriginatorAddress (void) const
bool HasOriginatorAddress (void) const
 Tests whether or not this message has an originator address.
void SetHopLimit (uint8_t hoplimit)
 Sets the maximum number of hops this message should travel.
uint8_t GetHopLimit (void) const
bool HasHopLimit (void) const
 Tests whether or not this message has a hop limit.
void SetHopCount (uint8_t hopcount)
 Sets the current number of hops this message has traveled.
uint8_t GetHopCount (void) const
bool HasHopCount (void) const
 Tests whether or not this message has a hop count.
void SetSequenceNumber (uint16_t seqnum)
 Sets the sequence number of this message.
uint16_t GetSequenceNumber (void) const
bool HasSequenceNumber (void) const
 Tests whether or not this message has a sequence number.
TlvIterator TlvBegin ()
ConstTlvIterator TlvBegin () const
TlvIterator TlvEnd ()
ConstTlvIterator TlvEnd () const
int TlvSize (void) const
bool TlvEmpty (void) const
Ptr< PbbTlvTlvFront (void)
const Ptr< PbbTlvTlvFront (void) const
Ptr< PbbTlvTlvBack (void)
const Ptr< PbbTlvTlvBack (void) const
void TlvPushFront (Ptr< PbbTlv > tlv)
 Prepends a message TLV to the front of this message.
void TlvPopFront (void)
 Removes a message TLV from the front of this message.
void TlvPushBack (Ptr< PbbTlv > tlv)
 Appends a message TLV to the back of this message.
void TlvPopBack (void)
 Removes a message TLV from the back of this message.
TlvIterator TlvErase (TlvIterator position)
 Removes the message TLV at the specified position.
TlvIterator TlvErase (TlvIterator first, TlvIterator last)
 Removes all message TLVs from [first, last) (includes first, not includes last).
void TlvClear (void)
 Removes all message TLVs from this block.
AddressBlockIterator AddressBlockBegin ()
ConstAddressBlockIterator AddressBlockBegin () const
AddressBlockIterator AddressBlockEnd ()
ConstAddressBlockIterator AddressBlockEnd () const
int AddressBlockSize (void) const
bool AddressBlockEmpty (void) const
Ptr< PbbAddressBlockAddressBlockFront (void)
const Ptr< PbbAddressBlockAddressBlockFront (void) const
Ptr< PbbAddressBlockAddressBlockBack (void)
const Ptr< PbbAddressBlockAddressBlockBack (void) const
void AddressBlockPushFront (Ptr< PbbAddressBlock > block)
 Prepends an address block to the front of this message.
void AddressBlockPopFront (void)
 Removes an address block from the front of this message.
void AddressBlockPushBack (Ptr< PbbAddressBlock > block)
 Appends an address block to the front of this message.
void AddressBlockPopBack (void)
 Removes an address block from the back of this message.
AddressBlockIterator AddressBlockErase (AddressBlockIterator position)
 Removes the address block at the specified position.
AddressBlockIterator AddressBlockErase (AddressBlockIterator first, AddressBlockIterator last)
 Removes all address blocks from [first, last) (includes first, not includes last).
void AddressBlockClear (void)
 Removes all address blocks from this message.
uint32_t GetSerializedSize (void) const
void Serialize (Buffer::Iterator &start) const
 Serializes this message into the specified buffer.
void Deserialize (Buffer::Iterator &start)
 Deserializes a message from the specified buffer.
void Print (std::ostream &os) const
 Pretty-prints the contents of this message.
void Print (std::ostream &os, int level) const
 Pretty-prints the contents of this message, with specified indentation.
bool operator== (const PbbMessage &other) const
bool operator!= (const PbbMessage &other) const
- Public Member Functions inherited from ns3::SimpleRefCount< PbbMessage >
 SimpleRefCount (const SimpleRefCount &o)
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
uint32_t GetReferenceCount (void) const

Static Public Member Functions

static Ptr< PbbMessageDeserializeMessage (Buffer::Iterator &start)
 Deserializes a message, returning the correct object depending on whether it is an IPv4 message or an IPv6 message.
- Static Public Member Functions inherited from ns3::SimpleRefCount< PbbMessage >
static void Cleanup (void)

Protected Member Functions

virtual PbbAddressLength GetAddressLength (void) const =0
virtual void SerializeOriginatorAddress (Buffer::Iterator &start) const =0
virtual Address DeserializeOriginatorAddress (Buffer::Iterator &start) const =0
virtual void PrintOriginatorAddress (std::ostream &os) const =0
virtual Ptr< PbbAddressBlockAddressBlockDeserialize (Buffer::Iterator &start) const =0

Detailed Description

A message within a PbbPacket packet.

There may be any number of messages in one packet packet. This is a pure virtual base class, when creating a message, you should instantiate either PbbMessageIpv4 or PbbMessageIpv6.


Member Function Documentation

Ptr< PbbAddressBlock > ns3::PbbMessage::AddressBlockBack ( void  )
Returns:
a smart pointer to the last address block in this message.
const Ptr< PbbAddressBlock > ns3::PbbMessage::AddressBlockBack ( void  ) const
Returns:
a const smart pointer to the last address block in this message.
PbbMessage::AddressBlockIterator ns3::PbbMessage::AddressBlockBegin ( void  )
Returns:
an iterator to the first address block in this message.

Referenced by AddressBlockClear(), GetSerializedSize(), Print(), and Serialize().

PbbMessage::ConstAddressBlockIterator ns3::PbbMessage::AddressBlockBegin ( void  ) const
Returns:
a const iterator to the first address block in this message.
bool ns3::PbbMessage::AddressBlockEmpty ( void  ) const
Returns:
true if there are no address blocks in this message, false otherwise.
PbbMessage::AddressBlockIterator ns3::PbbMessage::AddressBlockEnd ( void  )
Returns:
an iterator to the past-the-end address block element in this message.

Referenced by AddressBlockClear(), GetSerializedSize(), Print(), and Serialize().

PbbMessage::ConstAddressBlockIterator ns3::PbbMessage::AddressBlockEnd ( void  ) const
Returns:
a const iterator to the past-the-end address block element in this message.
PbbMessage::AddressBlockIterator ns3::PbbMessage::AddressBlockErase ( PbbMessage::AddressBlockIterator  position)

Removes the address block at the specified position.

Parameters:
positionan Iterator pointing to the address block to erase.
Returns:
an iterator pointing to the next address block in the message.
PbbMessage::AddressBlockIterator ns3::PbbMessage::AddressBlockErase ( PbbMessage::AddressBlockIterator  first,
PbbMessage::AddressBlockIterator  last 
)

Removes all address blocks from [first, last) (includes first, not includes last).

Parameters:
firstan Iterator pointing to the first address block to erase (inclusive).
lastan Iterator pointing to the element past the last address block to erase.
Returns:
an iterator pointing to the next address block in the message.
Ptr< PbbAddressBlock > ns3::PbbMessage::AddressBlockFront ( void  )
Returns:
a smart pointer to the first address block in this message.
const Ptr< PbbAddressBlock > ns3::PbbMessage::AddressBlockFront ( void  ) const
Returns:
a const smart pointer to the first address block in this message.
void ns3::PbbMessage::AddressBlockPushBack ( Ptr< PbbAddressBlock block)

Appends an address block to the front of this message.

Parameters:
blocka smart pointer to the address block to append.

Referenced by Deserialize().

void ns3::PbbMessage::AddressBlockPushFront ( Ptr< PbbAddressBlock block)

Prepends an address block to the front of this message.

Parameters:
blocka smart pointer to the address block to prepend.
int ns3::PbbMessage::AddressBlockSize ( void  ) const
Returns:
the number of address blocks in this message.
void ns3::PbbMessage::Deserialize ( Buffer::Iterator start)

Deserializes a message from the specified buffer.

Parameters:
starta reference to the point in a buffer to begin deserializing.

Users should not need to call this. Blocks will be deserialized by their containing packet.

References AddressBlockPushBack(), ns3::PbbTlvBlock::Deserialize(), ns3::Buffer::Iterator::GetDistanceFrom(), ns3::Buffer::Iterator::ReadNtohU16(), ns3::Buffer::Iterator::ReadU8(), SetHopCount(), SetHopLimit(), SetOriginatorAddress(), SetSequenceNumber(), and SetType().

Ptr< PbbMessage > ns3::PbbMessage::DeserializeMessage ( Buffer::Iterator start)
static

Deserializes a message, returning the correct object depending on whether it is an IPv4 message or an IPv6 message.

Parameters:
starta reference to the point in a buffer to begin deserializing.
Returns:
A pointer to the deserialized message, or 0 on error.

Users should not need to call this. Blocks will be deserialized by their containing packet.

References ns3::Buffer::Iterator::Next(), ns3::Buffer::Iterator::Prev(), and ns3::Buffer::Iterator::ReadU8().

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

uint8_t ns3::PbbMessage::GetHopCount ( void  ) const
Returns:
the current number of hops this message has traveled.

Calling this while HasHopCount is False is undefined. Make sure you check it first. This will be checked by an assert in debug builds.

References HasHopCount(), and NS_ASSERT.

Referenced by Print(), and Serialize().

uint8_t ns3::PbbMessage::GetHopLimit ( void  ) const
Returns:
the maximum number of hops this message should travel.

Calling this while HasHopLimit is False is undefined. Make sure you check it first. This will be checked by an assert in debug builds.

References HasHopLimit(), and NS_ASSERT.

Referenced by Print(), and Serialize().

Address ns3::PbbMessage::GetOriginatorAddress ( void  ) const
Returns:
the address of the node that created this packet.

Calling this while HasOriginatorAddress is False is undefined. Make sure you check it first. This will be checked by an assert in debug builds.

References HasOriginatorAddress(), and NS_ASSERT.

uint16_t ns3::PbbMessage::GetSequenceNumber ( void  ) const
Returns:
the sequence number of this message.

Calling this while HasSequenceNumber is False is undefined. Make sure you check it first. This will be checked by an assert in debug builds.

References HasSequenceNumber(), and NS_ASSERT.

Referenced by Print(), and Serialize().

uint32_t ns3::PbbMessage::GetSerializedSize ( void  ) const
uint8_t ns3::PbbMessage::GetType ( void  ) const
Returns:
the type assigned to this packet

Referenced by Print(), and Serialize().

bool ns3::PbbMessage::HasHopCount ( void  ) const

Tests whether or not this message has a hop count.

Returns:
true if this message has a hop limit, false otherwise.

Referenced by GetHopCount(), GetSerializedSize(), Print(), and Serialize().

bool ns3::PbbMessage::HasHopLimit ( void  ) const

Tests whether or not this message has a hop limit.

Returns:
true if this message has a hop limit, false otherwise.

If this is set, messages should not hop further than this limit.

Referenced by GetHopLimit(), GetSerializedSize(), Print(), and Serialize().

bool ns3::PbbMessage::HasOriginatorAddress ( void  ) const

Tests whether or not this message has an originator address.

Returns:
true if this message has an originator address, false otherwise.

Referenced by GetOriginatorAddress(), GetSerializedSize(), Print(), and Serialize().

bool ns3::PbbMessage::HasSequenceNumber ( void  ) const

Tests whether or not this message has a sequence number.

Returns:
true if this message has a sequence number, false otherwise.

Referenced by GetSequenceNumber(), GetSerializedSize(), Print(), and Serialize().

void ns3::PbbMessage::Print ( std::ostream &  os) const

Pretty-prints the contents of this message.

Parameters:
osa stream object to print to.
void ns3::PbbMessage::Print ( std::ostream &  os,
int  level 
) const

Pretty-prints the contents of this message, with specified indentation.

Parameters:
osa stream object to print to.
levellevel of indentation.

This probably never needs to be called by users. This is used when recursively printing sub-objects.

References AddressBlockBegin(), AddressBlockEnd(), GetHopCount(), GetHopLimit(), GetSequenceNumber(), GetType(), HasHopCount(), HasHopLimit(), HasOriginatorAddress(), HasSequenceNumber(), and ns3::PbbTlvBlock::Print().

void ns3::PbbMessage::Serialize ( Buffer::Iterator start) const

Serializes this message into the specified buffer.

Parameters:
starta reference to the point in a buffer to begin serializing.

Users should not need to call this. Blocks will be deserialized by their containing packet.

References AddressBlockBegin(), AddressBlockEnd(), ns3::Buffer::Iterator::GetDistanceFrom(), GetHopCount(), GetHopLimit(), GetSequenceNumber(), GetType(), HasHopCount(), HasHopLimit(), HasOriginatorAddress(), HasSequenceNumber(), ns3::Buffer::Iterator::Next(), ns3::PbbTlvBlock::Serialize(), ns3::Buffer::Iterator::WriteHtonU16(), and ns3::Buffer::Iterator::WriteU8().

void ns3::PbbMessage::SetHopCount ( uint8_t  hopcount)

Sets the current number of hops this message has traveled.

Parameters:
hopcountthe current number of hops

Referenced by Deserialize().

void ns3::PbbMessage::SetHopLimit ( uint8_t  hoplimit)

Sets the maximum number of hops this message should travel.

Parameters:
hoplimitthe limit to set

Referenced by Deserialize().

void ns3::PbbMessage::SetOriginatorAddress ( Address  address)

Sets the address for the node that created this packet.

Parameters:
addressthe originator address.

Referenced by Deserialize().

void ns3::PbbMessage::SetSequenceNumber ( uint16_t  seqnum)

Sets the sequence number of this message.

Parameters:
seqnumthe sequence number to set.

Referenced by Deserialize().

void ns3::PbbMessage::SetType ( uint8_t  type)

Sets the type for this message.

Parameters:
typethe type to set.

Referenced by Deserialize().

Ptr< PbbTlv > ns3::PbbMessage::TlvBack ( void  )
Returns:
a smart pointer to the last message TLV in this message.

References ns3::PbbTlvBlock::Back().

const Ptr< PbbTlv > ns3::PbbMessage::TlvBack ( void  ) const
Returns:
a const smart pointer to the last message TLV in this message.

References ns3::PbbTlvBlock::Back().

PbbMessage::TlvIterator ns3::PbbMessage::TlvBegin ( void  )
Returns:
an iterator to the first message TLV in this message.

References ns3::PbbTlvBlock::Begin().

PbbMessage::ConstTlvIterator ns3::PbbMessage::TlvBegin ( void  ) const
Returns:
a const iterator to the first message TLV in this message.

References ns3::PbbTlvBlock::Begin().

bool ns3::PbbMessage::TlvEmpty ( void  ) const
Returns:
true if there are no message TLVs in this message, false otherwise.

References ns3::PbbTlvBlock::Empty().

PbbMessage::TlvIterator ns3::PbbMessage::TlvEnd ( void  )
Returns:
an iterator to the past-the-end message TLV element in this message.

References ns3::PbbTlvBlock::End().

PbbMessage::ConstTlvIterator ns3::PbbMessage::TlvEnd ( void  ) const
Returns:
a const iterator to the past-the-end message TLV element in this message.

References ns3::PbbTlvBlock::End().

PbbMessage::TlvIterator ns3::PbbMessage::TlvErase ( PbbMessage::TlvIterator  position)

Removes the message TLV at the specified position.

Parameters:
positionan Iterator pointing to the message TLV to erase.
Returns:
an iterator pointing to the next TLV in the block.

References ns3::PbbTlvBlock::Erase().

PbbMessage::TlvIterator ns3::PbbMessage::TlvErase ( PbbMessage::TlvIterator  first,
PbbMessage::TlvIterator  last 
)

Removes all message TLVs from [first, last) (includes first, not includes last).

Parameters:
firstan Iterator pointing to the first message TLV to erase (inclusive).
lastan Iterator pointing to the element past the last message TLV to erase.
Returns:
an iterator pointing to the next message TLV in the message.

References ns3::PbbTlvBlock::Erase().

Ptr< PbbTlv > ns3::PbbMessage::TlvFront ( void  )
Returns:
a smart pointer to the first message TLV in this message.

References ns3::PbbTlvBlock::Front().

const Ptr< PbbTlv > ns3::PbbMessage::TlvFront ( void  ) const
Returns:
a const smart pointer to the first message TLV in this message.

References ns3::PbbTlvBlock::Front().

void ns3::PbbMessage::TlvPushBack ( Ptr< PbbTlv tlv)

Appends a message TLV to the back of this message.

Parameters:
tlva smart pointer to the message TLV to append.

References ns3::PbbTlvBlock::PushBack().

void ns3::PbbMessage::TlvPushFront ( Ptr< PbbTlv tlv)

Prepends a message TLV to the front of this message.

Parameters:
tlva smart pointer to the message TLV to prepend.

References ns3::PbbTlvBlock::PushFront().

int ns3::PbbMessage::TlvSize ( void  ) const
Returns:
the number of message TLVs in this message.

References ns3::PbbTlvBlock::Size().


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