]> git.tdb.fi Git - libs/net.git/blobdiff - source/streamsocket.h
Add an overload for resolve that takes host and service separately
[libs/net.git] / source / streamsocket.h
index 66841de0217f6fd5fb20dc6064c745980241ba47..8b39e91afd358214168c977e299e01bc714d3e76 100644 (file)
@@ -1,32 +1,32 @@
 #ifndef MSP_NET_STREAMSOCKET_H_
 #define MSP_NET_STREAMSOCKET_H_
 
-#include "socket.h"
+#include "clientsocket.h"
 
 namespace Msp {
 namespace Net {
 
-class StreamSocket: public Socket
+class StreamSocket: public ClientSocket
 {
-       friend class StreamListenSocket;
-private:
-       bool connecting;
-
-public:
-       /**
-       Emitted when the socket finishes connecting.  The argument is a standard
-       error code, 0 indicating success.
-       */
-       sigc::signal<void, int> signal_connect_finished;
+       friend class StreamServerSocket;
 
 private:
-       StreamSocket(SocketHandle, const SockAddr &);
+       /// Used by StreamListenSocket to construct a new socket from accept.
+       StreamSocket(const Private &, const SockAddr &);
 public:
        StreamSocket(Family, int = 0);
 
-       bool is_connecting() const { return connecting; }
-       int poll_connect(const Time::TimeDelta &);
-       int connect(const SockAddr &);
+       /** Connects to a remote address.  StreamSockets must be connected before
+       data can be sent and received.  Returns 0 if the connection was successfully
+       established, 1 if it's in progress.
+       
+       If the socket is non-blocking, this function may return before the
+       connection is fully established.  The caller must then use either the
+       poll_connect function or an EventDispatcher to finish the process. */
+       virtual bool connect(const SockAddr &);
+
+       virtual bool poll_connect(const Time::TimeDelta &);
+
 private:
        void on_event(IO::PollEvent);
 };