ns3::Address Class Reference
[Address]

a polymophic address class More...

#include <address.h>

List of all members.

Public Types

enum  MaxSize_e

Public Member Functions

 Address ()
 Address (uint8_t type, const uint8_t *buffer, uint8_t len)
bool IsInvalid (void) const
uint8_t GetLength (void) const
uint32_t CopyTo (uint8_t buffer[MAX_SIZE]) const
uint32_t CopyAllTo (uint8_t *buffer, uint8_t len) const
uint32_t CopyFrom (const uint8_t *buffer, uint8_t len)
uint32_t CopyAllFrom (const uint8_t *buffer, uint8_t len)
bool CheckCompatible (uint8_t type, uint8_t len) const
bool IsMatchingType (uint8_t type) const
uint32_t GetSerializedSize (void) const
void Serialize (TagBuffer buffer) const
void Deserialize (TagBuffer buffer)

Static Public Member Functions

static uint8_t Register (void)


Detailed Description

a polymophic address class

This class is very similar in design and spirit to the BSD sockaddr structure: they are both used to hold multiple types of addresses together with the type of the address.

A new address class defined by a user needs to:

Typical code to create a new class type looks like:

 // this class represents addresses which are 2 bytes long.
 class MyAddress
 {
 public:
   Address ConvertTo (void) const;
   static MyAddress ConvertFrom (void);
 private:
   static uint8_t GetType (void);
 };

 Address MyAddress::ConvertTo (void) const
 {
   return Address (GetType (), m_buffer, 2);
 }
 MyAddress MyAddress::ConvertFrom (const Address &address)
 {
   MyAddress ad;
   NS_ASSERT (address.CheckCompatible (GetType (), 2));
   address.CopyTo (ad.m_buffer, 2);
   return ad;
 }
 uint8_t MyAddress::GetType (void)
 {
   static uint8_t type = Address::Register ();
   return type;
 }

Member Enumeration Documentation

The maximum size of a byte buffer which can be stored in an Address instance.


Constructor & Destructor Documentation

ns3::Address::Address (  ) 

Create an invalid address

ns3::Address::Address ( uint8_t  type,
const uint8_t *  buffer,
uint8_t  len 
)

Parameters:
type the type of the Address to create
buffer a pointer to a buffer of bytes which hold a serialized representation of the address in network byte order.
len the length of the buffer.
Create an address from a type and a buffer. This constructor is typically invoked from the conversion functions of various address types when they have to convert themselves to an Address instance.


Member Function Documentation

bool ns3::Address::CheckCompatible ( uint8_t  type,
uint8_t  len 
) const

Parameters:
type a type id as returned by Address::Register
len the length associated to this type id.
Returns:
true if the type of the address stored internally is compatible with the requested type, false otherwise.

uint32_t ns3::Address::CopyAllFrom ( const uint8_t *  buffer,
uint8_t  len 
)

Parameters:
buffer pointer to a buffer of bytes which contain a copy of all the members of this Address class.
len the length of the buffer
Returns:
the number of bytes copied.
The inverse of CopyAllTo().

See also:
CopyAllTo

uint32_t ns3::Address::CopyAllTo ( uint8_t *  buffer,
uint8_t  len 
) const

Parameters:
buffer buffer to copy the whole address data structure to
len the size of the buffer
Returns:
the number of bytes copied.
Copies the type to buffer[0], the length of the address internal buffer to buffer[1] and copies the internal buffer starting at buffer[2]. len must be at least the size of the internal buffer plus a byte for the type and a byte for the length.

uint32_t ns3::Address::CopyFrom ( const uint8_t *  buffer,
uint8_t  len 
)

Parameters:
buffer pointer to a buffer of bytes which contain a serialized representation of the address in network byte order.
len length of buffer
Returns:
the number of bytes copied.
Copy the address bytes from buffer into to the internal buffer of this address instance.

uint32_t ns3::Address::CopyTo ( uint8_t  buffer[MAX_SIZE]  )  const

Parameters:
buffer buffer to copy the address bytes to.
Returns:
the number of bytes copied.

void ns3::Address::Deserialize ( TagBuffer  buffer  ) 

Parameters:
buffer buffer to read address from
The input address buffer is expected to be in host byte order format.

uint8_t ns3::Address::GetLength ( void   )  const

Returns:
the length of the underlying address.

uint32_t ns3::Address::GetSerializedSize ( void   )  const

Get the number of bytes needed to serialize the underlying Address Typically, this is GetLength () + 2

Returns:
the number of bytes required for an Address in serialized form

bool ns3::Address::IsInvalid ( void   )  const

Returns:
true if this address is invalid, false otherwise.
An address is invalid if and only if it was created through the default constructor and it was never re-initialized.

bool ns3::Address::IsMatchingType ( uint8_t  type  )  const

Parameters:
type a type id as returned by Address::Register
Returns:
true if the type of the address stored internally is compatible with the requested type, false otherwise.
This method checks that the types are _exactly_ equal. This method is really used only by the PacketSocketAddress and there is little point in using it otherwise so, you have been warned: DO NOT USE THIS METHOD.

static uint8_t ns3::Address::Register ( void   )  [static]

Allocate a new type id for a new type of address.

Returns:
a new type id.

void ns3::Address::Serialize ( TagBuffer  buffer  )  const

Serialize this address in host byte order to a byte buffer

Parameters:
buffer output buffer that gets written with this Address


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

Generated on Fri Apr 9 15:01:10 2010 for NS-3 by  doxygen 1.5.8