removed some useless spaces; not very important, I know :)
[senf.git] / Socket / Protocols / INet / INetAddressing.cci
index 4b28057..c95b69d 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 //
 // Copyright (C) 2006
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-//     Stefan Bund <stefan.bund@fokus.fraunhofer.de>
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+//     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -38,16 +38,6 @@ prefix_ senf::INet4SocketAddress::INet4SocketAddress()
     clear();
 }
 
-prefix_ senf::INet4SocketAddress::INet4SocketAddress(char const * address)
-{
-    assignString(address);
-}
-
-prefix_ senf::INet4SocketAddress::INet4SocketAddress(std::string const & address)
-{
-    assignString(address);
-}
-
 prefix_ bool senf::INet4SocketAddress::operator==(INet4SocketAddress const & other)
     const
 {
@@ -55,11 +45,10 @@ prefix_ bool senf::INet4SocketAddress::operator==(INet4SocketAddress const & oth
         addr_.sin_addr.s_addr == other.addr_.sin_addr.s_addr;
 }
 
-prefix_ std::string senf::INet4SocketAddress::host()
+prefix_ senf::INet4Address senf::INet4SocketAddress::address()
     const
 {
-    char buffer[128];
-    return std::string(::inet_ntop(AF_INET,&addr_.sin_addr,buffer,128));
+    return INet4Address::from_inaddr(addr_.sin_addr.s_addr);
 }
 
 prefix_ unsigned senf::INet4SocketAddress::port()
@@ -68,73 +57,42 @@ prefix_ unsigned senf::INet4SocketAddress::port()
     return ntohs(addr_.sin_port);
 }
 
-prefix_ struct sockaddr * senf::INet4SocketAddress::sockaddr_p()
-{
-    return reinterpret_cast<struct sockaddr *>(&addr_);
-}
-
-prefix_ struct sockaddr const * senf::INet4SocketAddress::sockaddr_p()
+prefix_ bool senf::INet4SocketAddress::boolean_test()
     const
 {
-    return reinterpret_cast<struct sockaddr const *>(&addr_);
-}
-
-prefix_ unsigned senf::INet4SocketAddress::sockaddr_len()
-    const
-{
-    return sizeof(addr_);
-}
-
-prefix_ std::ostream & senf::operator<<(std::ostream & os, INet4SocketAddress const & addr)
-{
-    os << addr.str();
-    return os;
-}
-
-///////////////////////////////////////////////////////////////////////////
-// senf::INet6Address
-
-prefix_ senf::INet6Address::INet6Address()
-{
-    clear();
+    return port() || address();
 }
 
-prefix_ senf::INet6Address::INet6Address(struct in6_addr const & addr)
+prefix_ void senf::INet4SocketAddress::address(INet4Address const & addr)
 {
-    addr_ = addr;
+    addr_.sin_addr.s_addr = addr.inaddr();
 }
 
-prefix_ struct in6_addr & senf::INet6Address::addr()
-{
-    return addr_;
-}
-
-prefix_ struct in6_addr const & senf::INet6Address::addr()
-    const
+prefix_ void senf::INet4SocketAddress::port(unsigned p)
 {
-    return addr_;
+    addr_.sin_port = htons(p);
 }
 
-prefix_ struct in6_addr * senf::INet6Address::addr_p()
+prefix_ struct sockaddr * senf::INet4SocketAddress::sockaddr_p()
 {
-    return & addr_;
+    return reinterpret_cast<struct sockaddr *>(&addr_);
 }
 
-prefix_ struct in6_addr const * senf::INet6Address::addr_p()
+prefix_ struct sockaddr const * senf::INet4SocketAddress::sockaddr_p()
     const
 {
-    return & addr_;
+    return reinterpret_cast<struct sockaddr const *>(&addr_);
 }
 
-prefix_ unsigned senf::INet6Address::addr_len()
+prefix_ unsigned senf::INet4SocketAddress::sockaddr_len()
     const
 {
     return sizeof(addr_);
 }
 
-prefix_ std::ostream & senf::operator<<(std::ostream & os, INet6Address const & addr)
+prefix_ std::ostream & senf::operator<<(std::ostream & os, INet4SocketAddress const & addr)
 {
-    os << addr.address();
+    os << addr.address() << ":" << addr.port();
     return os;
 }
 
@@ -146,22 +104,10 @@ prefix_ senf::INet6SocketAddress::INet6SocketAddress()
     clear();
 }
 
-prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr)
-{
-    clear();
-    assignAddr(addr);
-}
-
-prefix_ senf::INet6SocketAddress::INet6SocketAddress(char const * addr)
-{
-    clear();
-    assignAddr(addr);
-}
-
 prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr, unsigned port)
 {
     clear();
-    sockaddr_.sin6_addr = addr.addr();
+    std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]);
     sockaddr_.sin6_port = htons(port);
 }
 
@@ -169,28 +115,20 @@ prefix_ senf::INet6SocketAddress::INet6SocketAddress(INet6Address const & addr,
                                                      std::string const & iface)
 {
     clear();
-    sockaddr_.sin6_addr = addr.addr();
+    std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]);
     sockaddr_.sin6_port = htons(port);
     assignIface(iface);
 }
 
-prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr,
-                                                     std::string const & iface)
-{
-    clear();
-    assignAddr(addr);
-    assignIface(iface);
-}
-
-prefix_ senf::INet6Address senf::INet6SocketAddress::host()
+prefix_ senf::INet6Address senf::INet6SocketAddress::address()
     const
 {
-    return INet6Address(sockaddr_.sin6_addr);
+    return INet6Address::from_data(&sockaddr_.sin6_addr.s6_addr[0]);
 }
 
-prefix_ void senf::INet6SocketAddress::host(INet6Address const & addr)
+prefix_ void senf::INet6SocketAddress::address(INet6Address const & addr)
 {
-    sockaddr_.sin6_addr = addr.addr();
+    std::copy(addr.begin(), addr.end(), &sockaddr_.sin6_addr.s6_addr[0]);
 }
 
 prefix_ unsigned senf::INet6SocketAddress::port()
@@ -228,7 +166,11 @@ prefix_ unsigned senf::INet6SocketAddress::sockaddr_len()
 
 prefix_ std::ostream & senf::operator<<(std::ostream & os, INet6SocketAddress const & addr)
 {
-    os << addr.address();
+    os << '[' << addr.address();
+    std::string iface (addr.iface());
+    if (! iface.empty())
+        os << '%' << iface;
+    os << "]:" << addr.port();
     return os;
 }