]> git.tdb.fi Git - libs/net.git/blob - source/net/socket.h
c830930d6d54b6787357e73f92e48a17882d1168
[libs/net.git] / source / net / socket.h
1 #ifndef MSP_NET_SOCKET_H_
2 #define MSP_NET_SOCKET_H_
3
4 #include <msp/io/eventobject.h>
5 #include <msp/io/handle.h>
6 #include "constants.h"
7 #include "sockaddr.h"
8
9 namespace Msp {
10 namespace Net {
11
12 class bad_socket_state: public std::logic_error
13 {
14 public:
15         bad_socket_state(const std::string &w): std::logic_error(w) { }
16         virtual ~bad_socket_state() throw() { }
17 };
18
19
20 class Socket: public IO::EventObject
21 {
22 protected:
23         struct Private;
24
25         Private *priv;
26         SockAddr *local_addr;
27
28         Socket(const Private &);
29         Socket(Family, int, int);
30 public:
31         ~Socket();
32
33         virtual void set_block(bool);
34         virtual const IO::Handle &get_event_handle();
35
36         /** Associates the socket with a local address.  There must be no existing
37         users of the address. */
38         void bind(const SockAddr &);
39
40         const SockAddr &get_local_address() const;
41
42         void set_timeout(const Time::TimeDelta &);
43 };
44
45 } // namespace Net
46 } // namespace Msp
47
48 #endif