namespace Msp {
namespace Net {
-#ifdef WIN32
-typedef int socklen_t;
-#endif
-
-
class bad_socket_state: public std::logic_error
{
public:
class Socket: public IO::EventObject
{
protected:
+ enum SocketEvent
+ {
+ S_NONE = IO::P_NONE,
+ S_INPUT = IO::P_INPUT,
+ S_CONNECT = 4096,
+ S_ACCEPT = 8192
+ };
+
struct Private;
Private *priv;
Socket(const Private &);
Socket(Family, int, int);
+private:
+ void platform_init();
+ void platform_cleanup();
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();
/** Associates the socket with a local address. There must be no existing
void set_timeout(const Time::TimeDelta &);
protected:
- int set_option(int, int, const void *, socklen_t);
- int get_option(int, int, void *, socklen_t *) const;
+ void set_socket_events(unsigned);
+ void set_platform_events(unsigned);
};
} // namespace Net