-void Socket::set_timeout(const Time::TimeDelta &timeout)
-{
-#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));
-#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));
-#endif
-}
-
-int Socket::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);
-#else
- return setsockopt(priv->handle, level, optname, optval, optlen);
-#endif
-}
-
-int Socket::get_option(int level, int optname, void *optval, socklen_t *optlen) const