#include <msp/strings/format.h>
#include <msp/time/rawtime_private.h>
#include <msp/time/units.h>
+#include "sockaddr_private.h"
#include "socket.h"
#include "socket_private.h"
{
priv->handle = p.handle;
- sockaddr_storage sa;
- socklen_t size = sizeof(sockaddr_storage);
- getsockname(priv->handle, reinterpret_cast<sockaddr *>(&sa), &size);
- local_addr = SockAddr::create(sa);
+ SockAddr::SysAddr sa;
+ getsockname(priv->handle, reinterpret_cast<sockaddr *>(&sa.addr), &sa.size);
+ local_addr = SockAddr::from_sys(sa);
#ifdef WIN32
*priv->event = CreateEvent(0, false, false, 0);
void Socket::bind(const SockAddr &addr)
{
- sockaddr_storage sa;
- unsigned size = addr.fill_sockaddr(sa);
+ SockAddr::SysAddr sa = addr.to_sys();
- int err = ::bind(priv->handle, reinterpret_cast<sockaddr *>(&sa), size);
+ int err = ::bind(priv->handle, reinterpret_cast<sockaddr *>(&sa.addr), sa.size);
if(err==-1)
throw system_error("bind");