]> git.tdb.fi Git - libs/net.git/blobdiff - source/sockaddr.cpp
Add an overload for resolve that takes host and service separately
[libs/net.git] / source / sockaddr.cpp
index c3ae2db3091d06730b183a6ad51f886808b1fad9..9b41f81b948492dc077920dbe83ea06a80ea8a67 100644 (file)
@@ -1,26 +1,31 @@
-/* $Id$
-
-This file is part of libmspnet
-Copyright © 2008  Mikkosoft Productions, Mikko Rasa
-Distributed under the LGPL
-*/
-
-#include <msp/core/except.h>
+#include <stdexcept>
 #include "inet.h"
+#include "inet6.h"
+#include "sockaddr_private.h"
+
+using namespace std;
 
 namespace Msp {
 namespace Net {
 
-SockAddr *SockAddr::create(sockaddr &sa)
+SockAddr *SockAddr::new_from_sys(const SysAddr &sa)
 {
-       switch(sa.sa_family)
+       switch(sa.addr.ss_family)
        {
        case AF_INET:
-               return new InetAddr(reinterpret_cast<sockaddr_in &>(sa));
+               return new InetAddr(sa);
+       case AF_INET6:
+               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