#include <NetAddress.hh>
Collaboration diagram for NetAddressList:

Public Member Functions | |
| NetAddressList (char const *hostname) | |
| NetAddressList (NetAddressList const &orig) | |
| NetAddressList & | operator= (NetAddressList const &rightSide) |
| virtual | ~NetAddressList () |
| unsigned | numAddresses () const |
| NetAddress const * | firstAddress () const |
Private Member Functions | |
| void | assign (netAddressBits numAddresses, NetAddress **addressArray) |
| void | clean () |
Private Attributes | |
| unsigned | fNumAddresses |
| NetAddress ** | fAddressArray |
Friends | |
| class | Iterator |
Data Structures | |
| class | Iterator |
Definition at line 62 of file NetAddress.hh.
| NetAddressList::NetAddressList | ( | char const * | hostname | ) |
Definition at line 84 of file NetAddress.cpp.
References fAddressArray, fNumAddresses, if(), INADDR_NONE, NULL, our_gethostbyname(), and our_inet_addr().
00085 : fNumAddresses(0), fAddressArray(NULL) { 00086 struct hostent* host; 00087 00088 // Check first whether "hostname" is an IP address string: 00089 netAddressBits addr = our_inet_addr((char*)hostname); 00090 if (addr != INADDR_NONE) { // yes it was an IP address string 00091 //##### host = gethostbyaddr((char*)&addr, sizeof (netAddressBits), AF_INET); 00092 host = NULL; // don't bother calling gethostbyaddr(); we only want 1 addr 00093 00094 if (host == NULL) { 00095 // For some unknown reason, gethostbyaddr() failed, so just 00096 // return a 1-element list with the address we were given: 00097 fNumAddresses = 1; 00098 fAddressArray = new NetAddress*[fNumAddresses]; 00099 if (fAddressArray == NULL) return; 00100 00101 fAddressArray[0] = new NetAddress((u_int8_t*)&addr, 00102 sizeof (netAddressBits)); 00103 return; 00104 } 00105 } else { // Try resolving "hostname" as a real host name 00106 00107 #if defined(VXWORKS) 00108 char hostentBuf[512]; 00109 host = (struct hostent*)resolvGetHostByName((char*)hostname,(char*)&hostentBuf,sizeof hostentBuf); 00110 #else 00111 host = our_gethostbyname((char*)hostname); 00112 #endif 00113 00114 if (host == NULL) { 00115 // It was a host name, and we couldn't resolve it. We're SOL. 00116 return; 00117 } 00118 } 00119 00120 u_int8_t const** const hAddrPtr 00121 = (u_int8_t const**)host->h_addr_list; 00122 if (hAddrPtr != NULL) { 00123 // First, count the number of addresses: 00124 u_int8_t const** hAddrPtr1 = hAddrPtr; 00125 while (*hAddrPtr1 != NULL) { 00126 ++fNumAddresses; 00127 ++hAddrPtr1; 00128 } 00129 00130 // Next, set up the list: 00131 fAddressArray = new NetAddress*[fNumAddresses]; 00132 if (fAddressArray == NULL) return; 00133 00134 for (unsigned i = 0; i < fNumAddresses; ++i) { 00135 fAddressArray[i] 00136 = new NetAddress(hAddrPtr[i], host->h_length); 00137 } 00138 } 00139 }
| NetAddressList::NetAddressList | ( | NetAddressList const & | orig | ) |
Definition at line 141 of file NetAddress.cpp.
References assign(), fAddressArray, and numAddresses().
00141 { 00142 assign(orig.numAddresses(), orig.fAddressArray); 00143 }
| NetAddressList::~NetAddressList | ( | ) | [virtual] |
| NetAddressList & NetAddressList::operator= | ( | NetAddressList const & | rightSide | ) |
Definition at line 145 of file NetAddress.cpp.
References assign(), clean(), fAddressArray, and numAddresses().
00145 { 00146 if (&rightSide != this) { 00147 clean(); 00148 assign(rightSide.numAddresses(), rightSide.fAddressArray); 00149 } 00150 return *this; 00151 }
| unsigned NetAddressList::numAddresses | ( | ) | const [inline] |
Definition at line 69 of file NetAddress.hh.
References fNumAddresses.
Referenced by MediaSubsession::connectionEndpointAddress(), getSDPDescriptionFromURL(), main(), NetAddressList(), NetAddressList::Iterator::nextAddress(), operator=(), RTSPClient::parseRTSPURL(), SIPClient::parseSIPURL(), parseSourceFilterAttribute(), and DarwinInjector::setDestination().
00069 { return fNumAddresses; }
| NetAddress const * NetAddressList::firstAddress | ( | ) | const |
Definition at line 177 of file NetAddress.cpp.
References fAddressArray, fNumAddresses, and NULL.
Referenced by MediaSubsession::connectionEndpointAddress(), getSDPDescriptionFromURL(), main(), RTSPClient::parseRTSPURL(), SIPClient::parseSIPURL(), parseSourceFilterAttribute(), and DarwinInjector::setDestination().
00177 { 00178 if (fNumAddresses == 0) return NULL; 00179 00180 return fAddressArray[0]; 00181 }
| void NetAddressList::assign | ( | netAddressBits | numAddresses, | |
| NetAddress ** | addressArray | |||
| ) | [private] |
Referenced by NetAddressList(), and operator=().
| void NetAddressList::clean | ( | ) | [private] |
Definition at line 170 of file NetAddress.cpp.
References fAddressArray, fNumAddresses, and NULL.
Referenced by operator=(), and ~NetAddressList().
00170 { 00171 while (fNumAddresses-- > 0) { 00172 delete fAddressArray[fNumAddresses]; 00173 } 00174 delete[] fAddressArray; fAddressArray = NULL; 00175 }
friend class Iterator [friend] |
Definition at line 87 of file NetAddress.hh.
unsigned NetAddressList::fNumAddresses [private] |
Definition at line 88 of file NetAddress.hh.
Referenced by clean(), firstAddress(), NetAddressList(), and numAddresses().
NetAddress** NetAddressList::fAddressArray [private] |
Definition at line 89 of file NetAddress.hh.
Referenced by clean(), firstAddress(), NetAddressList(), NetAddressList::Iterator::nextAddress(), and operator=().
1.5.2