a polymophic address class
More...
#include <address.h>
List of all members.
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:
- allocate a type id with Address::Register
- provide a method to convert his new address to an Address instance. This method is typically a member method named ConvertTo: Address MyAddress::ConvertTo (void) const;
- provide a method to convert an Address instance back to an instance of his new address type. This method is typically a static member method of his address class named ConvertFrom: static MyAddress MyAddress::ConvertFrom (const Address &address);
- the ConvertFrom method is expected to check that the type of the input Address instance is compatible with its own type.
Typical code to create a new class type looks like:
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.
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.
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 input buffer 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:
-
- 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: