1 #ifndef MSP_NET_SOCKET_H_
2 #define MSP_NET_SOCKET_H_
4 #include <msp/io/eventobject.h>
5 #include <msp/io/handle.h>
13 typedef int socklen_t;
17 class bad_socket_state: public std::logic_error
20 bad_socket_state(const std::string &w): std::logic_error(w) { }
21 virtual ~bad_socket_state() throw() { }
25 class Socket: public IO::EventObject
33 Socket(const Private &);
34 Socket(Family, int, int);
39 const IO::Handle &get_event_handle();
41 /** Associates the socket with a local address. There must be no existing
42 users of the address. */
43 void bind(const SockAddr &);
45 void set_timeout(const Time::TimeDelta &);
46 const SockAddr &get_local_address() const;
48 int set_option(int, int, const void *, socklen_t);
49 int get_option(int, int, void *, socklen_t *) const;