X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsockaddr.cpp;h=0d14dfd34cb6899b30c60926b272c9cc85b36aa5;hb=e6f09239fae7ff675e1068365a06803dcc8f8d1f;hp=f95edd3f9558fde0a870ac743f73bee845fdcdd7;hpb=2aab4004e71a2e5c773289e0be5e58aec6a8d339;p=libs%2Fnet.git diff --git a/source/sockaddr.cpp b/source/sockaddr.cpp index f95edd3..0d14dfd 100644 --- a/source/sockaddr.cpp +++ b/source/sockaddr.cpp @@ -1,27 +1,31 @@ -#include +#include #include "inet.h" #include "inet6.h" +#include "sockaddr_private.h" + +using namespace std; namespace Msp { namespace Net { -unsigned SockAddr::fill_sockaddr(sockaddr_storage &sa) const -{ - return fill_sockaddr(reinterpret_cast(sa)); -} - -SockAddr *SockAddr::create(const sockaddr_storage &sa) +SockAddr *SockAddr::from_sys(const SysAddr &sa) { - switch(sa.ss_family) + switch(sa.addr.ss_family) { case AF_INET: - return new InetAddr(reinterpret_cast(sa)); + return new InetAddr(sa); case AF_INET6: - return new Inet6Addr(reinterpret_cast(sa)); + return new Inet6Addr(sa); default: - throw InvalidParameterValue("Unknown address family"); + throw invalid_argument("SockAddr::create"); } } +SockAddr::SysAddr::SysAddr(): + size(sizeof(sockaddr_storage)) +{ + addr.ss_family = AF_UNSPEC; +} + } // namespace Net } // namespace Msp