]> git.tdb.fi Git - libs/net.git/blobdiff - source/streamsocket.cpp
Add ClientSocket and ServerSocket abstractions
[libs/net.git] / source / streamsocket.cpp
index 5794ecd82914b16c3c8d22c7edc28a56ffffcbf5..3fa6b9a13daafda29f3cd47f8ee1ef7d01cc3953 100644 (file)
@@ -14,8 +14,7 @@ namespace Msp {
 namespace Net {
 
 StreamSocket::StreamSocket(const Private &p, const SockAddr &paddr):
-       Socket(p, paddr),
-       connecting(false)
+       ClientSocket(p, paddr)
 {
 #ifdef WIN32
        WSAEventSelect(priv->handle, *priv->event, FD_READ|FD_CLOSE);
@@ -24,11 +23,10 @@ StreamSocket::StreamSocket(const Private &p, const SockAddr &paddr):
 }
 
 StreamSocket::StreamSocket(Family af, int proto):
-       Socket(af, SOCK_STREAM, proto),
-       connecting(false)
+       ClientSocket(af, SOCK_STREAM, proto)
 { }
 
-int StreamSocket::poll_connect(const Time::TimeDelta &timeout)
+bool StreamSocket::poll_connect(const Time::TimeDelta &timeout)
 {
        if(!connecting)
                throw bad_socket_state("not connecting");
@@ -64,14 +62,12 @@ int StreamSocket::poll_connect(const Time::TimeDelta &timeout)
                set_events(IO::P_INPUT);
 
                connected = true;
-
-               return 0;
        }
 
-       return 1;
+       return connected;
 }
 
-int StreamSocket::connect(const SockAddr &addr)
+bool StreamSocket::connect(const SockAddr &addr)
 {
        if(connected)
                throw bad_socket_state("already connected");
@@ -121,7 +117,7 @@ int StreamSocket::connect(const SockAddr &addr)
                signal_connect_finished.emit(0);
        }
 
-       return (err==0)?0:1;
+       return connected;
 }
 
 void StreamSocket::on_event(IO::PollEvent ev)