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