X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstreamsocket.h;h=8b39e91afd358214168c977e299e01bc714d3e76;hb=21c596567e3b6fd794ed6af73d304ce2bc70e58f;hp=66841de0217f6fd5fb20dc6064c745980241ba47;hpb=a81c41acd873cda7f40bca634782230d9e57dc4f;p=libs%2Fnet.git diff --git a/source/streamsocket.h b/source/streamsocket.h index 66841de..8b39e91 100644 --- a/source/streamsocket.h +++ b/source/streamsocket.h @@ -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 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); };