]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/socket.cpp
Minor cleanup
[libs/net.git] / source / net / socket.cpp
index 75919777e6cb0c256d3a9dea1bf0ded6bd3587b4..031d077c44dcc194a095455d06dde3def3a62ccd 100644 (file)
@@ -1,4 +1,6 @@
-#ifndef WIN32
+#ifdef _WIN32
+#include <winsock2.h>
+#else
 #include <cerrno>
 #include <unistd.h>
 #include <fcntl.h>
@@ -16,7 +18,7 @@
 
 namespace {
 
-#ifdef WIN32
+#ifdef _WIN32
 class WinSockHelper
 {
 public:
@@ -46,13 +48,15 @@ Socket::Socket(const Private &p):
        priv(new Private),
        local_addr(0)
 {
+       mode = IO::M_RDWR;
+
        priv->handle = p.handle;
 
        SockAddr::SysAddr sa;
        getsockname(priv->handle, reinterpret_cast<sockaddr *>(&sa.addr), &sa.size);
        local_addr = SockAddr::new_from_sys(sa);
 
-#ifdef WIN32
+#ifdef _WIN32
        *priv->event = CreateEvent(0, false, false, 0);
 #else
        *priv->event = priv->handle;
@@ -63,9 +67,11 @@ Socket::Socket(Family af, int type, int proto):
        priv(new Private),
        local_addr(0)
 {
+       mode = IO::M_RDWR;
+
        priv->handle = socket(family_to_sys(af), type, proto);
 
-#ifdef WIN32
+#ifdef _WIN32
        *priv->event = CreateEvent(0, false, false, 0);
 #else
        *priv->event = priv->handle;
@@ -74,7 +80,7 @@ Socket::Socket(Family af, int type, int proto):
 
 Socket::~Socket()
 {
-#ifdef WIN32
+#ifdef _WIN32
        closesocket(priv->handle);
        CloseHandle(*priv->event);
 #else
@@ -91,7 +97,7 @@ void Socket::set_block(bool b)
        if(b)
                mode = (mode|IO::M_NONBLOCK);
 
-#ifdef WIN32
+#ifdef _WIN32
        u_long flag = !b;
        ioctlsocket(priv->handle, FIONBIO, &flag);
 #else
@@ -105,7 +111,6 @@ const IO::Handle &Socket::get_event_handle()
        return priv->event;
 }
 
-
 void Socket::bind(const SockAddr &addr)
 {
        SockAddr::SysAddr sa = addr.to_sys();
@@ -127,32 +132,33 @@ const SockAddr &Socket::get_local_address() const
 
 void Socket::set_timeout(const Time::TimeDelta &timeout)
 {
-#ifndef WIN32
+#ifndef _WIN32
        timeval tv = Time::rawtime_to_timeval(timeout.raw());
-       set_option(SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(timeval));
-       set_option(SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(timeval));
+       priv->set_option(SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(timeval));
+       priv->set_option(SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(timeval));
 #else
        DWORD msecs = static_cast<DWORD>(timeout/Time::msec);
-       set_option(SOL_SOCKET, SO_RCVTIMEO, &msecs, sizeof(DWORD));
-       set_option(SOL_SOCKET, SO_SNDTIMEO, &msecs, sizeof(DWORD));
+       priv->set_option(SOL_SOCKET, SO_RCVTIMEO, &msecs, sizeof(DWORD));
+       priv->set_option(SOL_SOCKET, SO_SNDTIMEO, &msecs, sizeof(DWORD));
 #endif
 }
 
-int Socket::set_option(int level, int optname, const void *optval, socklen_t optlen)
+
+int Socket::Private::set_option(int level, int optname, const void *optval, socklen_t optlen)
 {
-#ifdef WIN32
-       return setsockopt(priv->handle, level, optname, reinterpret_cast<const char *>(optval), optlen);
+#ifdef _WIN32
+       return setsockopt(handle, level, optname, reinterpret_cast<const char *>(optval), optlen);
 #else
-       return setsockopt(priv->handle, level, optname, optval, optlen);
+       return setsockopt(handle, level, optname, optval, optlen);
 #endif
 }
 
-int Socket::get_option(int level, int optname, void *optval, socklen_t *optlen) const
+int Socket::Private::get_option(int level, int optname, void *optval, socklen_t *optlen)
 {
-#ifdef WIN32
-       return getsockopt(priv->handle, level, optname, reinterpret_cast<char *>(optval), optlen);
+#ifdef _WIN32
+       return getsockopt(handle, level, optname, reinterpret_cast<char *>(optval), optlen);
 #else
-       return getsockopt(priv->handle, level, optname, optval, optlen);
+       return getsockopt(handle, level, optname, optval, optlen);
 #endif
 }