]> git.tdb.fi Git - libs/net.git/blobdiff - source/net/streamsocket.h
Prepare for assimilating msphttp
[libs/net.git] / source / net / streamsocket.h
diff --git a/source/net/streamsocket.h b/source/net/streamsocket.h
new file mode 100644 (file)
index 0000000..8b39e91
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef MSP_NET_STREAMSOCKET_H_
+#define MSP_NET_STREAMSOCKET_H_
+
+#include "clientsocket.h"
+
+namespace Msp {
+namespace Net {
+
+class StreamSocket: public ClientSocket
+{
+       friend class StreamServerSocket;
+
+private:
+       /// Used by StreamListenSocket to construct a new socket from accept.
+       StreamSocket(const Private &, const SockAddr &);
+public:
+       StreamSocket(Family, int = 0);
+
+       /** 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);
+};
+
+} // namespace Net
+} // namespace Msp
+
+#endif