-void Socket::set_timeout(const Time::TimeDelta &timeout)
-{
-#ifndef _WIN32
- timeval tv = Time::rawtime_to_timeval(timeout.raw());
- 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);
- priv->set_option(SOL_SOCKET, SO_RCVTIMEO, &msecs, sizeof(DWORD));
- priv->set_option(SOL_SOCKET, SO_SNDTIMEO, &msecs, sizeof(DWORD));
-#endif
-}
-
-
-int Socket::Private::set_option(int level, int optname, const void *optval, socklen_t optlen)
-{
-#ifdef _WIN32
- return setsockopt(handle, level, optname, reinterpret_cast<const char *>(optval), optlen);
-#else
- return setsockopt(handle, level, optname, optval, optlen);
-#endif
-}
-
-int Socket::Private::get_option(int level, int optname, void *optval, socklen_t *optlen)