]> git.tdb.fi Git - libs/net.git/blob - source/socket.h
Style update: spaces around assignments
[libs/net.git] / source / socket.h
1 #ifndef MSP_NET_SOCKET_H_
2 #define MSP_NET_SOCKET_H_
3
4 #include <msp/io/base.h>
5 #include "constants.h"
6 #include "sockaddr.h"
7 #include "types.h"
8
9 namespace Msp {
10 namespace Net {
11
12 class Socket: public IO::Base
13 {
14 protected:
15         SocketHandle handle;
16 #ifdef WIN32
17         IO::Handle event;
18 #endif
19         bool connected;
20         SockAddr *local_addr;
21         SockAddr *peer_addr;
22
23         Socket(SocketHandle, const SockAddr &);
24         Socket(Family, int, int);
25 public:
26         ~Socket();
27
28         void set_block(bool);
29         IO::Handle get_event_handle();
30
31         bool is_connected() const { return connected; }
32         void bind(const SockAddr &);
33         virtual int connect(const SockAddr &) = 0;
34         void close();
35         void set_timeout(const Time::TimeDelta &);
36         const SockAddr &get_local_address() const;
37         const SockAddr &get_peer_address() const;
38 protected:
39         void check_state(bool) const;
40         int set_option(int, int, const void *, socklen_t);
41         int get_option(int, int, void *, socklen_t *) const;
42         unsigned do_write(const char *, unsigned);
43         unsigned do_read(char *, unsigned);
44 };
45
46 } // namespace Net
47 } // namespace Msp
48
49 #endif