+#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