]> git.sesse.net Git - cubemap/blob - acceptor.h
Release Cubemap 1.2.1.
[cubemap] / acceptor.h
1 #ifndef _ACCEPTOR_H
2 #define _ACCEPTOR_H
3
4 #include <netinet/in.h>
5
6 #include "thread.h"
7
8 enum SocketType {
9         TCP_SOCKET,
10         UDP_SOCKET,
11 };
12 int create_server_socket(const sockaddr_in6 &addr, SocketType socket_type);
13
14 class AcceptorProto;
15
16 sockaddr_in6 create_any_address(int port);
17 sockaddr_in6 extract_address_from_acceptor_proto(const AcceptorProto &proto);
18
19 // A thread that accepts new connections on a given socket,
20 // and hands them off to the server pool.
21 class Acceptor : public Thread {
22 public:
23         Acceptor(int server_sock, const sockaddr_in6 &addr);
24
25         // Serialization/deserialization.
26         Acceptor(const AcceptorProto &serialized);
27         AcceptorProto serialize() const;
28
29         void close_socket();
30
31 private:
32         virtual void do_work();
33
34         int server_sock;
35         sockaddr_in6 addr;
36 };
37
38 #endif  // !defined(_ACCEPTOR_H)