--- a/src/Network/Address.cc Tue Dec 16 23:21:26 2008 +0000
+++ b/src/Network/Address.cc Wed Dec 17 00:40:22 2008 +0000
@@ -3,32 +3,25 @@
#include <sstream>
-NetworkAddress::NetworkAddress (void) :
- hostname(), service(), address_length(0)
+NetworkEndpoint::NetworkEndpoint (void) :
+ hostname(), service()
{
}
-NetworkAddress::NetworkAddress (std::string service) :
- hostname(), service(service), address_length(0)
+NetworkEndpoint::NetworkEndpoint (std::string service) :
+ hostname(), service(service)
{
}
-NetworkAddress::NetworkAddress (std::string hostname, std::string service) :
- hostname(hostname), service(service), address_length(0)
+NetworkEndpoint::NetworkEndpoint (std::string hostname, std::string service) :
+ hostname(hostname), service(service)
{
}
-
-NetworkAddress::NetworkAddress (const sockaddr *addr, socklen_t len) :
- hostname(), service(), address_length(0)
-{
- // proxy to set_sockaddr
- set_sockaddr(addr, len);
-}
-
-addrinfo* NetworkAddress::get_addrinfo (int family, int socktype, int protocol, int flags) const {
+
+addrinfo* NetworkEndpoint::get_addrinfo (int family, int socktype, int protocol, int flags) const {
addrinfo hints, *results;
int err;
@@ -53,49 +46,18 @@
return results;
}
-const sockaddr* NetworkAddress::get_sockaddr (socklen_t &len_ref) const {
- // we can't figure this out ourselves...
- if (address_length == 0)
- throw Error("NetworkAddress::get_sockaddr called without a valid sockaddr set");
-
- // update len
- len_ref = address_length;
-
- // and return a pointer to our internal address
- return (const sockaddr*) &address;
+void NetworkEndpoint::free_addrinfo (addrinfo *info) const {
+ freeaddrinfo(info);
}
-void NetworkAddress::set_sockaddr (const sockaddr *addr, socklen_t len) {
- char host_buf[NI_MAXHOST], serv_buf[NI_MAXSERV];
- int err;
-
- // invalid length?
- if (len > sizeof(this->address))
- throw NetworkAddressError(*this, "set_sockaddr", "invalid sockaddr length");
-
- // do getnameinfo()
- if ((err = getnameinfo(addr, len, host_buf, NI_MAXHOST, serv_buf, NI_MAXSERV, NI_NUMERICHOST | NI_NUMERICSERV)))
- throw NetworkAddressError(*this, "getnameinfo", gai_strerror(err));
-
- // copy over to address
- memcpy(&this->address, addr, len);
-
- // and update address_length
- this->address_length = len;
-
- // and the hostname + service
- hostname = host_buf;
- service = serv_buf;
-}
-
-std::ostream& operator<< (std::ostream &s, const NetworkAddress &addr) {
+std::ostream& operator<< (std::ostream &s, const NetworkEndpoint &addr) {
s << "[" << addr.get_hostname() << ":" << addr.get_service() << "]";
return s;
}
-std::string NetworkAddressError::build_str (const NetworkAddress &addr, const char *op, const char *msg) {
+std::string NetworkAddressError::build_str (const NetworkEndpoint &addr, const char *op, const char *msg) {
std::stringstream ss;
ss << op << ": " << addr << ": " << msg;
@@ -103,11 +65,9 @@
return ss.str();
}
-NetworkAddressError::NetworkAddressError (const NetworkAddress &addr, const char *op, const char *msg) :
+NetworkAddressError::NetworkAddressError (const NetworkEndpoint &addr, const char *op, const char *msg) :
Error(build_str(addr, op, msg))
{
}
-
-