I3SubIdentifier Class Reference

#include <I3SubIdentifier.h>

List of all members.


Detailed Description

A wrapper around either an I3IPAddress or an I3Identifier.

Author:
Antonio Zea The I3 paper proposes an identifier stack that is "a list of identifiers that takes the form (id[1], id[2], ..., id[k]) where where id[i] is either an identifier or an address." To avoid confusion, the former identifier id[i] is called an I3SubIdentifier and the latter is the normal I3Identifier.

Public Types

enum  IdentifierType { Invalid, Identifier, IPAddress }
 Identifier type. More...

Public Member Functions

 I3SubIdentifier ()
 Constructor.
void setIPAddress (const I3IPAddress &address)
 Sets this identifier as an I3IPAddress.
void setIdentifier (const I3Identifier &id)
 Sets this identifier as an I3Identifier.
IdentifierType getType () const
 Returns the subidentifier type.
I3IPAddressgetIPAddress ()
 Returns the IP address.
I3IdentifiergetIdentifier ()
 Returns the identifier.
int compareTo (const I3SubIdentifier &) const
 Comparison function.
int length () const

Protected Attributes

IdentifierType type
 Type of subidentifier.
I3IPAddress ipAddress
 IP address referred to.
I3Identifier identifier
 Identifier referred to.

Friends

std::ostream & operator<< (std::ostream &os, const I3SubIdentifier &s)

Member Enumeration Documentation

Identifier type.

Enumerator:
Invalid 
Identifier  Type has not been set yet.
IPAddress  Subidentifier refers to an I3Identifier.

Subidentifier refers to an I3IPAddress

00040                         {
00041         Invalid,       
00042         Identifier,    
00043         IPAddress      
00044     };


Constructor & Destructor Documentation

I3SubIdentifier::I3SubIdentifier (  ) 

Constructor.

Author:
Antonio Zea
00022                                  :
00023         type(Invalid)
00024 {
00025 }


Member Function Documentation

void I3SubIdentifier::setIPAddress ( const I3IPAddress address  ) 

Sets this identifier as an I3IPAddress.

Parameters:
address IP address to set to
00028 {
00029     type = IPAddress;
00030     ipAddress = address;
00031     identifier.clear();
00032 }

void I3SubIdentifier::setIdentifier ( const I3Identifier id  ) 

Sets this identifier as an I3Identifier.

Parameters:
id Identifer to set to
00035 {
00036     type = Identifier;
00037 
00038     I3IPAddress zero; // initialized to zero
00039     ipAddress = zero; // set to clear
00040 
00041     identifier = id;
00042 }

I3SubIdentifier::IdentifierType I3SubIdentifier::getType (  )  const

Returns the subidentifier type.

Returns:
Subidentifier type

Referenced by I3::handleUDPMessage(), I3BaseApp::sendPacket(), and I3::sendPacket().

00045 {
00046     return type;
00047 }

I3IPAddress & I3SubIdentifier::getIPAddress (  ) 

Returns the IP address.

Returns:
IP address referred to

Referenced by I3BaseApp::sendPacket().

00050 {
00051     if (type != IPAddress) {
00052         // error!
00053     }
00054     return ipAddress;
00055 }

I3Identifier & I3SubIdentifier::getIdentifier (  ) 

Returns the identifier.

Returns:
Identifier referred to

Referenced by I3::handleUDPMessage(), I3BaseApp::sendPacket(), and I3::sendPacket().

00058 {
00059     if (type != Identifier) {
00060         // error!
00061     };
00062     return identifier;
00063 }

int I3SubIdentifier::compareTo ( const I3SubIdentifier id  )  const

Comparison function.

00066 {
00067     if (type != id.type) {
00068         return type - id.type;
00069     } else if (type == Identifier) {
00070         return identifier.compareTo(id.identifier);
00071     } else if (type == IPAddress) {
00072         if (ipAddress.ip < id.ipAddress.ip) return -1;
00073         else if (ipAddress.ip == id.ipAddress.ip) return ipAddress.port - id.ipAddress.port;
00074         else return 1;
00075     }
00076     return 0;
00077 }

int I3SubIdentifier::length (  )  const

00079                                   {
00080 //      return sizeof(type) + (type == IPAddress ? ipAddress.length() : identifier.length());
00081     return 1 + (type == IPAddress ? ipAddress.length() : identifier.length());
00082 }


Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const I3SubIdentifier s 
) [friend]

00084                                                                  {
00085     if (s.type == I3SubIdentifier::Identifier) {
00086         os << s.identifier;
00087     } else {
00088         os << s.ipAddress;
00089     }
00090     return os;
00091 }


Member Data Documentation

IP address referred to.

Referenced by compareTo(), getIPAddress(), length(), operator<<(), setIdentifier(), and setIPAddress().

Identifier referred to.

Referenced by compareTo(), getIdentifier(), length(), operator<<(), setIdentifier(), and setIPAddress().


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

Generated on Fri Sep 19 13:05:07 2008 for ITM OverSim by  doxygen 1.5.5