ns-3
ns3::PbbAddressBlock Class Reference

An Address Block and its associated Address TLV Blocks. More...

#include <packetbb.h>

Inheritance diagram for ns3::PbbAddressBlock:
Collaboration diagram for ns3::PbbAddressBlock:

List of all members.

Public Types

typedef std::list< Address >
::iterator 
AddressIterator
typedef std::list< Address >
::const_iterator 
ConstAddressIterator
typedef std::list< uint8_t >
::iterator 
PrefixIterator
typedef std::list< uint8_t >
::const_iterator 
ConstPrefixIterator
typedef
PbbAddressTlvBlock::Iterator 
TlvIterator
typedef
PbbAddressTlvBlock::ConstIterator 
ConstTlvIterator

Public Member Functions

AddressIterator AddressBegin (void)
ConstAddressIterator AddressBegin (void) const
AddressIterator AddressEnd (void)
ConstAddressIterator AddressEnd (void) const
int AddressSize (void) const
bool AddressEmpty (void) const
Address AddressFront (void) const
Address AddressBack (void) const
void AddressPushFront (Address address)
 Prepends an address to the front of this block.
void AddressPopFront (void)
 Removes an address from the front of this block.
void AddressPushBack (Address address)
 Appends an address to the back of this block.
void AddressPopBack (void)
 Removes an address from the back of this block.
AddressIterator AddressInsert (AddressIterator position, const Address value)
 Inserts an address at the specified position in this block.
AddressIterator AddressErase (AddressIterator position)
 Removes the address at the specified position.
AddressIterator AddressErase (AddressIterator first, AddressIterator last)
 Removes all addresses from [first, last) (includes first, not includes last).
void AddressClear (void)
 Removes all addresses from this block.
PrefixIterator PrefixBegin (void)
ConstPrefixIterator PrefixBegin (void) const
PrefixIterator PrefixEnd (void)
ConstPrefixIterator PrefixEnd (void) const
int PrefixSize (void) const
bool PrefixEmpty (void) const
uint8_t PrefixFront (void) const
uint8_t PrefixBack (void) const
void PrefixPushFront (uint8_t prefix)
 Prepends a prefix to the front of this block.
void PrefixPopFront (void)
 Removes a prefix from the front of this block.
void PrefixPushBack (uint8_t prefix)
 Appends a prefix to the back of this block.
void PrefixPopBack (void)
 Removes a prefix from the back of this block.
PrefixIterator PrefixInsert (PrefixIterator position, const uint8_t value)
 Inserts a prefix at the specified position in this block.
PrefixIterator PrefixErase (PrefixIterator position)
 Removes the prefix at the specified position.
PrefixIterator PrefixErase (PrefixIterator first, PrefixIterator last)
 Removes all prefixes from [first, last) (includes first, not includes last).
void PrefixClear (void)
 Removes all prefixes from this block.
TlvIterator TlvBegin (void)
ConstTlvIterator TlvBegin (void) const
TlvIterator TlvEnd (void)
ConstTlvIterator TlvEnd (void) const
int TlvSize (void) const
bool TlvEmpty (void) const
Ptr< PbbAddressTlvTlvFront (void)
const Ptr< PbbAddressTlvTlvFront (void) const
Ptr< PbbAddressTlvTlvBack (void)
const Ptr< PbbAddressTlvTlvBack (void) const
void TlvPushFront (Ptr< PbbAddressTlv > address)
 Prepends an address TLV to the front of this message.
void TlvPopFront (void)
 Removes an address TLV from the front of this message.
void TlvPushBack (Ptr< PbbAddressTlv > address)
 Appends an address TLV to the back of this message.
void TlvPopBack (void)
 Removes an address TLV from the back of this message.
TlvIterator TlvInsert (TlvIterator position, const Ptr< PbbTlv > value)
 Inserts an address TLV at the specified position in this block.
TlvIterator TlvErase (TlvIterator position)
 Removes the address TLV at the specified position.
TlvIterator TlvErase (TlvIterator first, TlvIterator last)
 Removes all address TLVs from [first, last) (includes first, not includes last).
void TlvClear (void)
 Removes all address TLVs from this block.
uint32_t GetSerializedSize (void) const
void Serialize (Buffer::Iterator &start) const
 Serializes this address block into the specified buffer.
void Deserialize (Buffer::Iterator &start)
 Deserializes an address block from the specified buffer.
void Print (std::ostream &os) const
 Pretty-prints the contents of this address block.
void Print (std::ostream &os, int level) const
 Pretty-prints the contents of this address block, with specified indentation.
bool operator== (const PbbAddressBlock &other) const
bool operator!= (const PbbAddressBlock &other) const
- Public Member Functions inherited from ns3::SimpleRefCount< PbbAddressBlock >
 SimpleRefCount (const SimpleRefCount &o)
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
uint32_t GetReferenceCount (void) const

Protected Member Functions

virtual uint8_t GetAddressLength (void) const =0
virtual void SerializeAddress (uint8_t *buffer, ConstAddressIterator iter) const =0
virtual Address DeserializeAddress (uint8_t *buffer) const =0
virtual void PrintAddress (std::ostream &os, ConstAddressIterator iter) const =0

Additional Inherited Members

- Static Public Member Functions inherited from ns3::SimpleRefCount< PbbAddressBlock >
static void Cleanup (void)

Detailed Description

An Address Block and its associated Address TLV Blocks.

This is a pure virtual base class, when creating address blocks, you should instantiate either PbbAddressBlockIpv4 or PbbAddressBlockIpv6.


Member Function Documentation

Address ns3::PbbAddressBlock::AddressBack ( void  ) const
Returns:
the last address in this block.
PbbAddressBlock::AddressIterator ns3::PbbAddressBlock::AddressBegin ( void  )
Returns:
an iterator to the first address in this block.

Referenced by Print(), and Serialize().

PbbAddressBlock::ConstAddressIterator ns3::PbbAddressBlock::AddressBegin ( void  ) const
Returns:
a const iterator to the first address in this block.
bool ns3::PbbAddressBlock::AddressEmpty ( void  ) const
Returns:
true if there are no addresses in this block, false otherwise.
PbbAddressBlock::AddressIterator ns3::PbbAddressBlock::AddressEnd ( void  )
Returns:
an iterator to the last address in this block.

Referenced by Print(), and Serialize().

PbbAddressBlock::ConstAddressIterator ns3::PbbAddressBlock::AddressEnd ( void  ) const
Returns:
a const iterator to the last address in this block.
PbbAddressBlock::AddressIterator ns3::PbbAddressBlock::AddressErase ( PbbAddressBlock::AddressIterator  position)

Removes the address at the specified position.

Parameters:
positionan Iterator pointing to the address to erase.
Returns:
an iterator pointing to the next address in the block.
PbbAddressBlock::AddressIterator ns3::PbbAddressBlock::AddressErase ( PbbAddressBlock::AddressIterator  first,
PbbAddressBlock::AddressIterator  last 
)

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

Parameters:
firstan Iterator pointing to the first address to erase (inclusive).
lastan Iterator pointing to the element past the last address to erase.
Returns:
an iterator pointing to the next address in the block.
Address ns3::PbbAddressBlock::AddressFront ( void  ) const
Returns:
the first address in this block.
AddressIterator ns3::PbbAddressBlock::AddressInsert ( AddressIterator  position,
const Address  value 
)

Inserts an address at the specified position in this block.

Parameters:
positionan Iterator pointing to the position in this block to insert the address.
valuethe address to insert.
Returns:
An iterator pointing to the newly inserted address.
void ns3::PbbAddressBlock::AddressPushBack ( Address  address)

Appends an address to the back of this block.

Parameters:
addressthe address to append.

Referenced by Deserialize().

void ns3::PbbAddressBlock::AddressPushFront ( Address  address)

Prepends an address to the front of this block.

Parameters:
addressthe address to prepend.
int ns3::PbbAddressBlock::AddressSize ( void  ) const
Returns:
the number of addresses in this block.

Referenced by GetSerializedSize(), and Serialize().

void ns3::PbbAddressBlock::Deserialize ( Buffer::Iterator start)

Deserializes an address block 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 AddressPushBack(), ns3::PbbAddressTlvBlock::Deserialize(), PrefixPushBack(), ns3::Buffer::Iterator::Read(), and ns3::Buffer::Iterator::ReadU8().

uint32_t ns3::PbbAddressBlock::GetSerializedSize ( void  ) const
Returns:
The size (in bytes) needed to serialize this address block.

References AddressSize(), ns3::PbbAddressTlvBlock::GetSerializedSize(), and PrefixSize().

uint8_t ns3::PbbAddressBlock::PrefixBack ( void  ) const
Returns:
the last prefix in this block.
PbbAddressBlock::PrefixIterator ns3::PbbAddressBlock::PrefixBegin ( void  )
Returns:
an iterator to the first prefix in this block.

Referenced by Print(), and Serialize().

PbbAddressBlock::ConstPrefixIterator ns3::PbbAddressBlock::PrefixBegin ( void  ) const
Returns:
a const iterator to the first prefix in this block.
bool ns3::PbbAddressBlock::PrefixEmpty ( void  ) const
Returns:
true if there are no prefixes in this block, false otherwise.
PbbAddressBlock::PrefixIterator ns3::PbbAddressBlock::PrefixEnd ( void  )
Returns:
an iterator to the last prefix in this block.

Referenced by Print(), and Serialize().

PbbAddressBlock::ConstPrefixIterator ns3::PbbAddressBlock::PrefixEnd ( void  ) const
Returns:
a const iterator to the last prefix in this block.
PbbAddressBlock::PrefixIterator ns3::PbbAddressBlock::PrefixErase ( PbbAddressBlock::PrefixIterator  position)

Removes the prefix at the specified position.

Parameters:
positionan Iterator pointing to the prefix to erase.
Returns:
an iterator pointing to the next prefix in the block.
PbbAddressBlock::PrefixIterator ns3::PbbAddressBlock::PrefixErase ( PbbAddressBlock::PrefixIterator  first,
PbbAddressBlock::PrefixIterator  last 
)

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

Parameters:
firstan Iterator pointing to the first prefix to erase (inclusive).
lastan Iterator pointing to the element past the last prefix to erase.
Returns:
an iterator pointing to the next prefix in the block.
uint8_t ns3::PbbAddressBlock::PrefixFront ( void  ) const
Returns:
the first prefix in this block.

Referenced by Serialize().

PbbAddressBlock::PrefixIterator ns3::PbbAddressBlock::PrefixInsert ( PbbAddressBlock::PrefixIterator  position,
const uint8_t  value 
)

Inserts a prefix at the specified position in this block.

Parameters:
positionan Iterator pointing to the position in this block to insert the prefix.
valuethe prefix to insert.
Returns:
An iterator pointing to the newly inserted prefix.
void ns3::PbbAddressBlock::PrefixPushBack ( uint8_t  prefix)

Appends a prefix to the back of this block.

Parameters:
prefixthe prefix to append.

Referenced by Deserialize().

void ns3::PbbAddressBlock::PrefixPushFront ( uint8_t  prefix)

Prepends a prefix to the front of this block.

Parameters:
prefixthe prefix to prepend.
int ns3::PbbAddressBlock::PrefixSize ( void  ) const
Returns:
the number of prefixes in this block.

Referenced by GetSerializedSize(), and Serialize().

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

Pretty-prints the contents of this address block.

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

Pretty-prints the contents of this address block, 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 AddressBegin(), AddressEnd(), PrefixBegin(), PrefixEnd(), and ns3::PbbAddressTlvBlock::Print().

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

Serializes this address block 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 AddressBegin(), AddressEnd(), AddressSize(), ns3::Buffer::Iterator::Next(), PrefixBegin(), PrefixEnd(), PrefixFront(), PrefixSize(), ns3::PbbAddressTlvBlock::Serialize(), ns3::Buffer::Iterator::Write(), and ns3::Buffer::Iterator::WriteU8().

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

References ns3::PbbAddressTlvBlock::Back().

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

References ns3::PbbAddressTlvBlock::Back().

PbbAddressBlock::TlvIterator ns3::PbbAddressBlock::TlvBegin ( void  )
Returns:
an iterator to the first address TLV in this block.

References ns3::PbbAddressTlvBlock::Begin().

PbbAddressBlock::ConstTlvIterator ns3::PbbAddressBlock::TlvBegin ( void  ) const
Returns:
a const iterator to the first address TLV in this block.

References ns3::PbbAddressTlvBlock::Begin().

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

References ns3::PbbAddressTlvBlock::Empty().

PbbAddressBlock::TlvIterator ns3::PbbAddressBlock::TlvEnd ( void  )
Returns:
an iterator to the last address TLV in this block.

References ns3::PbbAddressTlvBlock::End().

PbbAddressBlock::ConstTlvIterator ns3::PbbAddressBlock::TlvEnd ( void  ) const
Returns:
a const iterator to the last address TLV in this block.

References ns3::PbbAddressTlvBlock::End().

PbbAddressBlock::TlvIterator ns3::PbbAddressBlock::TlvErase ( PbbAddressBlock::TlvIterator  position)

Removes the address TLV at the specified position.

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

References ns3::PbbAddressTlvBlock::Erase().

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

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

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

References ns3::PbbAddressTlvBlock::Erase().

Ptr< PbbAddressTlv > ns3::PbbAddressBlock::TlvFront ( void  )
Returns:
a smart pointer to the first address TLV in this block.

References ns3::PbbAddressTlvBlock::Front().

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

References ns3::PbbAddressTlvBlock::Front().

TlvIterator ns3::PbbAddressBlock::TlvInsert ( TlvIterator  position,
const Ptr< PbbTlv value 
)

Inserts an address TLV at the specified position in this block.

Parameters:
positionan Iterator pointing to the position in this block to insert the address TLV.
valuethe prefix to insert.
Returns:
An iterator pointing to the newly inserted address TLV.
void ns3::PbbAddressBlock::TlvPushBack ( Ptr< PbbAddressTlv address)

Appends an address TLV to the back of this message.

Parameters:
addressa smart pointer to the address TLV to append.

References ns3::PbbAddressTlvBlock::PushBack().

void ns3::PbbAddressBlock::TlvPushFront ( Ptr< PbbAddressTlv address)

Prepends an address TLV to the front of this message.

Parameters:
addressa smart pointer to the address TLV to prepend.

References ns3::PbbAddressTlvBlock::PushFront().

int ns3::PbbAddressBlock::TlvSize ( void  ) const
Returns:
the number of address TLVs in this block.

References ns3::PbbAddressTlvBlock::Size().


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