#define MSP_NET_SOCKADDR_H_
#include <string>
-#ifndef WIN32
-#include <sys/socket.h>
-#endif
#include "constants.h"
namespace Msp {
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 *new_from_sys(const SysAddr &);
+ virtual SysAddr to_sys() const = 0;
+
virtual Family get_family() const = 0;
virtual std::string str() const = 0;
-
- /**
- Fills the given struct sockaddr with information from this SockAddr.
-
- @return Number of bytes used
- */
- virtual unsigned fill_sockaddr(sockaddr &) const = 0;
- virtual unsigned fill_sockaddr(sockaddr_storage &) const;
};
} // namespace Net