]> git.tdb.fi Git - libs/net.git/blob - source/net/sockaddr.cpp
Move most platform-specific code into overlay directories
[libs/net.git] / source / net / sockaddr.cpp
1 #include <stdexcept>
2 #include "platform_api.h"
3 #include "inet.h"
4 #include "inet6.h"
5 #include "sockaddr_private.h"
6 #include "unix.h"
7
8 using namespace std;
9
10 namespace Msp {
11 namespace Net {
12
13 SockAddr *SockAddr::new_from_sys(const SysAddr &sa)
14 {
15         switch(sa.addr.ss_family)
16         {
17         case AF_INET:
18                 return new InetAddr(sa);
19         case AF_INET6:
20                 return new Inet6Addr(sa);
21         case AF_UNIX:
22                 return new UnixAddr(sa);
23         default:
24                 throw invalid_argument("SockAddr::create");
25         }
26 }
27
28 SockAddr::SysAddr::SysAddr():
29         size(sizeof(sockaddr_storage))
30 {
31         addr.ss_family = AF_UNSPEC;
32 }
33
34 } // namespace Net
35 } // namespace Msp