-/* $Id$
-
-This file is part of libmspnet
-Copyright © 2008 Mikkosoft Productions, Mikko Rasa
-Distributed under the LGPL
-*/
-
#ifndef MSP_NET_SOCKET_H_
#define MSP_NET_SOCKET_H_
class Socket: public IO::Base
{
+protected:
+ SocketHandle handle;
+#ifdef WIN32
+ IO::Handle event;
+#endif
+ bool connected;
+ SockAddr *local_addr;
+ SockAddr *peer_addr;
+
+ Socket(SocketHandle, const SockAddr &);
+ Socket(Family, int, int);
public:
+ ~Socket();
+
void set_block(bool);
IO::Handle get_event_handle();
- bool get_connected() const { return connected; }
+ bool is_connected() const { return connected; }
void bind(const SockAddr &);
virtual int connect(const SockAddr &) =0;
void close();
+ void set_timeout(const Time::TimeDelta &);
const SockAddr &get_local_address() const;
const SockAddr &get_peer_address() const;
- ~Socket();
protected:
- SocketHandle handle;
-#ifdef WIN32
- IO::Handle event;
-#endif
- bool connected;
- SockAddr *local_addr;
- SockAddr *peer_addr;
-
- Socket(SocketHandle, const SockAddr &);
- Socket(Family, int, int);
void check_state(bool) const;
- int get_option(int, int, void *, socklen_t *);
+ int set_option(int, int, const void *, socklen_t);
+ int get_option(int, int, void *, socklen_t *) const;
unsigned do_write(const char *, unsigned);
unsigned do_read(char *, unsigned);
};