]> git.tdb.fi Git - libs/net.git/blobdiff - source/sockaddr.h
Hide platform specific parts of socket addresses
[libs/net.git] / source / sockaddr.h
index ff2f88a9b7be650064d4528f18ba3ff88ddd510e..bf7547778dbf80cca68f85d2117bf8c74fbf2204 100644 (file)
@@ -2,9 +2,6 @@
 #define MSP_NET_SOCKADDR_H_
 
 #include <string>
-#ifndef WIN32
-#include <sys/socket.h>
-#endif
 #include "constants.h"
 
 namespace Msp {
@@ -12,23 +9,21 @@ namespace Net {
 
 class SockAddr
 {
+public:
+       struct SysAddr;
+
 protected:
        SockAddr() { }
 public:
        virtual ~SockAddr() { }
 
-       static SockAddr *create(const sockaddr &sa) { return create(reinterpret_cast<const sockaddr_storage &>(sa)); }
-       static SockAddr *create(const sockaddr_storage &);
-
        virtual SockAddr *copy() const = 0;
 
+       static SockAddr *from_sys(const SysAddr &);
+       virtual SysAddr to_sys() const = 0;
+
        virtual Family get_family() const = 0;
        virtual std::string str() const = 0;
-
-       /** Fills a struct sockaddr with information from this SockAddr.  Returns
-       the number of bytes used. */
-       virtual unsigned fill_sockaddr(sockaddr &) const = 0;
-       virtual unsigned fill_sockaddr(sockaddr_storage &) const;
 };
 
 } // namespace Net