namespace Msp {
namespace Net {
+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:
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;
protected:
- void check_state(bool) const;
int set_option(int, int, const void *, socklen_t);
int get_option(int, int, void *, socklen_t *) const;
unsigned do_write(const char *, unsigned);