X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsocket.h;h=dbe31512a6f677eeed424d3a12748a50d8fc87eb;hb=bc7f7210f6963c7bd23cce9cea3d3e82a2968f98;hp=a2cbae1a285ded03a645b377b3e2a85188213664;hpb=4feef9d7a2d96668660686d3812973e6f788359a;p=libs%2Fnet.git diff --git a/source/socket.h b/source/socket.h index a2cbae1..dbe3151 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,19 @@ namespace Msp { namespace Net { -class Socket: public IO::Base +class bad_socket_state: public std::logic_error +{ +public: + bad_socket_state(const std::string &w): std::logic_error(w) { } + virtual ~bad_socket_state() throw() { } +}; + + +class Socket: public IO::EventObject { protected: SocketHandle handle; -#ifdef WIN32 IO::Handle event; -#endif bool connected; SockAddr *local_addr; SockAddr *peer_addr; @@ -26,7 +33,7 @@ public: ~Socket(); void set_block(bool); - IO::Handle get_event_handle(); + const IO::Handle &get_event_handle(); bool is_connected() const { return connected; } @@ -38,9 +45,6 @@ public: 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;