Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions

ns3::PbbMessage Class Reference

A message within a PbbPacket packet. More...

#include <packetbb.h>

Inheritance diagram for ns3::PbbMessage:
Inheritance graph
[legend]
Collaboration diagram for ns3::PbbMessage:
Collaboration graph
[legend]

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

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.

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.
AddressBlockIterator ns3::PbbMessage::AddressBlockBegin (  ) 
Returns:
an iterator to the first address block in this message.
ConstAddressBlockIterator ns3::PbbMessage::AddressBlockBegin (  )  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.
ConstAddressBlockIterator ns3::PbbMessage::AddressBlockEnd (  )  const
Returns:
a const iterator to the past-the-end address block element in this message.
AddressBlockIterator ns3::PbbMessage::AddressBlockEnd (  ) 
Returns:
an iterator to the past-the-end address block element in this message.
AddressBlockIterator ns3::PbbMessage::AddressBlockErase ( AddressBlockIterator  position  ) 

Removes the address block at the specified position.

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

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

Parameters:
first an Iterator pointing to the first address block to erase (inclusive).
last an 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:
block a smart pointer to the address block to append.
void ns3::PbbMessage::AddressBlockPushFront ( Ptr< PbbAddressBlock block  ) 

Prepends an address block to the front of this message.

Parameters:
block a 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:
start a 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.

static 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:
start a 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.

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.

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.

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.

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.

uint32_t ns3::PbbMessage::GetSerializedSize ( void   )  const
Returns:
The size (in bytes) needed to serialize this message.
uint8_t ns3::PbbMessage::GetType ( void   )  const
Returns:
the type assigned to this packet
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.
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.

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.
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.
void ns3::PbbMessage::Print ( std::ostream &  os  )  const

Pretty-prints the contents of this message.

Parameters:
os a 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:
os a stream object to print to.
level level of indentation.

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

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

Serializes this message into the specified buffer.

Parameters:
start a 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.

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

Sets the current number of hops this message has traveled.

Parameters:
hopcount the current number of hops
void ns3::PbbMessage::SetHopLimit ( uint8_t  hoplimit  ) 

Sets the maximum number of hops this message should travel.

Parameters:
hoplimit the limit to set
void ns3::PbbMessage::SetOriginatorAddress ( Address  address  ) 

Sets the address for the node that created this packet.

Parameters:
address the originator address.
void ns3::PbbMessage::SetSequenceNumber ( uint16_t  seqnum  ) 

Sets the sequence number of this message.

Parameters:
seqnum the sequence number to set.
void ns3::PbbMessage::SetType ( uint8_t  type  ) 

Sets the type for this message.

Parameters:
type the type to set.
Ptr<PbbTlv> ns3::PbbMessage::TlvBack ( void   ) 
Returns:
a smart pointer to the last message TLV in this message.
const Ptr<PbbTlv> ns3::PbbMessage::TlvBack ( void   )  const
Returns:
a const smart pointer to the last message TLV in this message.
TlvIterator ns3::PbbMessage::TlvBegin (  ) 
Returns:
an iterator to the first message TLV in this message.
ConstTlvIterator ns3::PbbMessage::TlvBegin (  )  const
Returns:
a const iterator to the first message TLV in this message.
bool ns3::PbbMessage::TlvEmpty ( void   )  const
Returns:
true if there are no message TLVs in this message, false otherwise.
TlvIterator ns3::PbbMessage::TlvEnd (  ) 
Returns:
an iterator to the past-the-end message TLV element in this message.
ConstTlvIterator ns3::PbbMessage::TlvEnd (  )  const
Returns:
a const iterator to the past-the-end message TLV element in this message.
TlvIterator ns3::PbbMessage::TlvErase ( TlvIterator  position  ) 

Removes the message TLV at the specified position.

Parameters:
position an Iterator pointing to the message TLV to erase.
Returns:
an iterator pointing to the next TLV in the block.
TlvIterator ns3::PbbMessage::TlvErase ( TlvIterator  first,
TlvIterator  last 
)

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

Parameters:
first an Iterator pointing to the first message TLV to erase (inclusive).
last an Iterator pointing to the element past the last message TLV to erase.
Returns:
an iterator pointing to the next message TLV in the message.
Ptr<PbbTlv> ns3::PbbMessage::TlvFront ( void   ) 
Returns:
a smart pointer to the first message TLV in this message.
const Ptr<PbbTlv> ns3::PbbMessage::TlvFront ( void   )  const
Returns:
a const smart pointer to the first message TLV in this message.
void ns3::PbbMessage::TlvPushBack ( Ptr< PbbTlv tlv  ) 

Appends a message TLV to the back of this message.

Parameters:
tlv a smart pointer to the message TLV to append.
void ns3::PbbMessage::TlvPushFront ( Ptr< PbbTlv tlv  ) 

Prepends a message TLV to the front of this message.

Parameters:
tlv a smart pointer to the message TLV to prepend.
int ns3::PbbMessage::TlvSize ( void   )  const
Returns:
the number of message TLVs in this message.

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