X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnet%2Fsocket.h;h=b89c175bda040d2e22b17ba3335cdefd225616bb;hb=HEAD;hp=a3823ee44d777d008a3454ee0d76e4d90cac7d42;hpb=6df110603b3a1248f52741e9d68d0bd032171b60;p=libs%2Fnet.git diff --git a/source/net/socket.h b/source/net/socket.h index a3823ee..b89c175 100644 --- a/source/net/socket.h +++ b/source/net/socket.h @@ -1,22 +1,24 @@ #ifndef MSP_NET_SOCKET_H_ #define MSP_NET_SOCKET_H_ +#include +#include #include #include -#include "constants.h" +#include "mspnet_api.h" #include "sockaddr.h" namespace Msp { namespace Net { -class bad_socket_state: public std::logic_error +class MSPNET_API bad_socket_state: public invalid_state { public: - bad_socket_state(const std::string &w): std::logic_error(w) { } + bad_socket_state(const std::string &w): invalid_state(w) { } }; -class Socket: public IO::EventObject +class MSPNET_API Socket: public IO::EventObject { protected: enum SocketEvent @@ -29,8 +31,8 @@ protected: struct Private; - Private *priv; - SockAddr *local_addr; + std::unique_ptr priv; + std::unique_ptr local_addr; Socket(const Private &); Socket(Family, int, int); @@ -40,16 +42,16 @@ private: public: ~Socket(); - virtual void set_block(bool); - virtual void set_inherit(bool); - const IO::Handle &get_handle(IO::Mode); - virtual const IO::Handle &get_event_handle(); + void set_block(bool) override; + void set_inherit(bool) override; + const IO::Handle &get_handle(IO::Mode) override; + const IO::Handle &get_event_handle() override; /** Associates the socket with a local address. There must be no existing users of the address. */ void bind(const SockAddr &); - bool is_bound() const { return local_addr; } + bool is_bound() const { return static_cast(local_addr); } const SockAddr &get_local_address() const; void set_timeout(const Time::TimeDelta &);