X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsocket.h;h=5536146544c3de098993d1af06295caeecd075be;hb=65b029e8334d4dfc9a6161fc04740b03d56a8e2f;hp=d48f3503bac63c7463c41bed46e5e93665f678f2;hpb=a81c41acd873cda7f40bca634782230d9e57dc4f;p=libs%2Fnet.git diff --git a/source/socket.h b/source/socket.h index d48f350..5536146 100644 --- a/source/socket.h +++ b/source/socket.h @@ -1,7 +1,8 @@ #ifndef MSP_NET_SOCKET_H_ #define MSP_NET_SOCKET_H_ -#include +#include +#include #include "constants.h" #include "sockaddr.h" #include "types.h" @@ -9,13 +10,11 @@ namespace Msp { namespace Net { -class Socket: public IO::Base +class Socket: public IO::EventObject { protected: SocketHandle handle; -#ifdef WIN32 IO::Handle event; -#endif bool connected; SockAddr *local_addr; SockAddr *peer_addr; @@ -26,12 +25,21 @@ public: ~Socket(); void set_block(bool); - IO::Handle get_event_handle(); + const IO::Handle &get_event_handle(); bool is_connected() const { return connected; } + + /** Associates the socket with a local address. There must be no existing + users of the address. */ void bind(const SockAddr &); + + /** Connects to a remote address. Exact semantics depend on the socket + type. */ virtual int connect(const SockAddr &) = 0; + + /// Closes the socket. Most operations will throw an exception after this. void close(); + void set_timeout(const Time::TimeDelta &); const SockAddr &get_local_address() const; const SockAddr &get_peer_address() const;