]> git.tdb.fi Git - libs/net.git/blob - source/sockaddr.cpp
f95edd3f9558fde0a870ac743f73bee845fdcdd7
[libs/net.git] / source / sockaddr.cpp
1 #include <msp/core/except.h>
2 #include "inet.h"
3 #include "inet6.h"
4
5 namespace Msp {
6 namespace Net {
7
8 unsigned SockAddr::fill_sockaddr(sockaddr_storage &sa) const
9 {
10         return fill_sockaddr(reinterpret_cast<sockaddr &>(sa));
11 }
12
13 SockAddr *SockAddr::create(const sockaddr_storage &sa)
14 {
15         switch(sa.ss_family)
16         {
17         case AF_INET:
18                 return new InetAddr(reinterpret_cast<const sockaddr_in &>(sa));
19         case AF_INET6:
20                 return new Inet6Addr(reinterpret_cast<const sockaddr_in6 &>(sa));
21         default:
22                 throw InvalidParameterValue("Unknown address family");
23         }
24 }
25
26 } // namespace Net
27 } // namespace Msp