]> git.tdb.fi Git - libs/net.git/blobdiff - source/streamlistensocket.cpp
Hide platform details of Socket behind pimpl
[libs/net.git] / source / streamlistensocket.cpp
index 693f3040dc85c0a81dcc1bd6b8271dea8a91f88a..3b375bcafcadb54d0581b1cf6500b82a87ca1448 100644 (file)
@@ -1,7 +1,9 @@
 #include <cerrno>
 #include <msp/core/refptr.h>
 #include <msp/core/systemerror.h>
+#include <msp/io/handle_private.h>
 #include <msp/strings/format.h>
+#include "socket_private.h"
 #include "streamlistensocket.h"
 #include "streamsocket.h"
 
@@ -25,12 +27,12 @@ void StreamListenSocket::listen(const SockAddr &addr, unsigned backlog)
 {
        bind(addr);
 
-       int err = ::listen(handle, backlog);
+       int err = ::listen(priv->handle, backlog);
        if(err==-1)
                throw system_error("listen");
 
 #ifdef WIN32
-       WSAEventSelect(handle, event, FD_ACCEPT);
+       WSAEventSelect(priv->handle, *priv->event, FD_ACCEPT);
 #endif
        set_events(IO::P_INPUT);
 
@@ -44,10 +46,11 @@ StreamSocket *StreamListenSocket::accept()
 
        sockaddr_storage sa;
        socklen_t size = sizeof(sockaddr_storage);
-       SocketHandle new_h = ::accept(handle, reinterpret_cast<sockaddr *>(&sa), &size);
+       Private new_p;
+       new_p.handle = ::accept(priv->handle, reinterpret_cast<sockaddr *>(&sa), &size);
 
        RefPtr<SockAddr> paddr = SockAddr::create(sa);
-       return new StreamSocket(new_h, *paddr);
+       return new StreamSocket(new_p, *paddr);
 }
 
 } // namespace Net