]> git.tdb.fi Git - libs/net.git/commitdiff
Hide the set_option and get_option functions in socket_private.h
authorMikko Rasa <tdb@tdb.fi>
Mon, 8 Oct 2012 20:38:31 +0000 (23:38 +0300)
committerMikko Rasa <tdb@tdb.fi>
Mon, 8 Oct 2012 20:40:29 +0000 (23:40 +0300)
These depend on a system-specific type, so they can't be in a public
header.

source/net/socket.cpp
source/net/socket.h
source/net/socket_private.h
source/net/streamsocket.cpp

index 75919777e6cb0c256d3a9dea1bf0ded6bd3587b4..2378207048c9a9a91395eca79227ea6088c5a56b 100644 (file)
@@ -129,30 +129,31 @@ 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));
+       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);
+       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);
+       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
 }
 
index f97588415b1e5df052b1138a1e706f596810fc0b..c830930d6d54b6787357e73f92e48a17882d1168 100644 (file)
@@ -9,11 +9,6 @@
 namespace Msp {
 namespace Net {
 
-#ifdef WIN32
-typedef int socklen_t;
-#endif
-
-
 class bad_socket_state: public std::logic_error
 {
 public:
@@ -45,9 +40,6 @@ public:
        const SockAddr &get_local_address() const;
 
        void set_timeout(const Time::TimeDelta &);
-protected:
-       int set_option(int, int, const void *, socklen_t);
-       int get_option(int, int, void *, socklen_t *) const;
 };
 
 } // namespace Net
index 83cc36947ac561a023f98c4b84f4e90be5cb30ec..fc8b23be4cf118d6e984f89735b43fc5c0345169 100644 (file)
@@ -7,6 +7,10 @@
 namespace Msp {
 namespace Net {
 
+#ifdef WIN32
+typedef int socklen_t;
+#endif
+
 struct Socket::Private
 {
 #ifdef WIN32
@@ -18,6 +22,9 @@ struct Socket::Private
        /* On POSIX platforms this is the same as the handle.  This might seem
        strange but it allows the same syntax on both POSIX and Windows. */
        IO::Handle event;
+
+       int set_option(int, int, const void *, socklen_t);
+       int get_option(int, int, void *, socklen_t *);
 };
 
 } // namespace Net
index 8a262454eca173dfcc6ef93f0fcd0d45c10582f7..3da0cc312ff640511f4a525c06ed7d6808f24888 100644 (file)
@@ -90,7 +90,7 @@ bool StreamSocket::poll_connect(const Time::TimeDelta &timeout)
 
                int err;
                socklen_t len = sizeof(int);
-               get_option(SOL_SOCKET, SO_ERROR, &err, &len);
+               priv->get_option(SOL_SOCKET, SO_ERROR, &err, &len);
 
                if(err!=0)
                {
@@ -119,7 +119,7 @@ void StreamSocket::on_event(IO::PollEvent ev)
        {
                int err;
                socklen_t len = sizeof(err);
-               get_option(SOL_SOCKET, SO_ERROR, &err, &len);
+               priv->get_option(SOL_SOCKET, SO_ERROR, &err, &len);
 
                connecting = false;
                connected = (err==0);