src/​examples/​cpp03/​http/​server/​server.​hpp | src/​examples/​cpp11/​http/​server/​server.​hpp
--- | ---
⋮ | ⋮
1 | /​/​ | 1 | /​/​
2 | /​/​·​server.​hpp | 2 | /​/​·​server.​hpp
3 | /​/​·​~~~~~~~~~~ | 3 | /​/​·​~~~~~~~~~~
4 | /​/​ | 4 | /​/​
5 | /​/​·​Copyright·​(c)​·​2003-​2020·​Christopher·​M.​·​Kohlhoff·​(chris·​at·​kohlhoff·​dot·​com)​ | 5 | /​/​·​Copyright·​(c)​·​2003-​2020·​Christopher·​M.​·​Kohlhoff·​(chris·​at·​kohlhoff·​dot·​com)​
6 | /​/​ | 6 | /​/​
7 | /​/​·​Distributed·​under·​the·​Boost·​Software·​License,​·​Version·​1.​0.​·​(See·​accompanying | 7 | /​/​·​Distributed·​under·​the·​Boost·​Software·​License,​·​Version·​1.​0.​·​(See·​accompanying
8 | /​/​·​file·​LICENSE_1_0.​txt·​or·​copy·​at·​http:​/​/​www.​boost.​org/​LICENSE_1_0.​txt)​ | 8 | /​/​·​file·​LICENSE_1_0.​txt·​or·​copy·​at·​http:​/​/​www.​boost.​org/​LICENSE_1_0.​txt)​
9 | /​/​ | 9 | /​/​
10 |  | 10 |
11 | #ifndef·​HTTP_SERVER_HPP | 11 | #ifndef·​HTTP_SERVER_HPP
12 | #define·​HTTP_SERVER_HPP | 12 | #define·​HTTP_SERVER_HPP
13 |  | 13 |
14 | #include·​<asio.​hpp> | 14 | #include·​<asio.​hpp>
15 | #include·​<string> | 15 | #include·​<string>
16 | #include·​<boost/​noncopyable.​hpp> |
17 | #include·​"connection.​hpp" | 16 | #include·​"connection.​hpp"
18 | #include·​"connection_manager.​hpp" | 17 | #include·​"connection_manager.​hpp"
19 | #include·​"request_handler.​hpp" | 18 | #include·​"request_handler.​hpp"
20 |  | 19 |
21 | namespace·​http·​{ | 20 | namespace·​http·​{
22 | namespace·​server·​{ | 21 | namespace·​server·​{
23 |  | 22 |
24 | /​/​/​·​The·​top-​level·​class·​of·​the·​HTTP·​server.​ | 23 | /​/​/​·​The·​top-​level·​class·​of·​the·​HTTP·​server.​
25 | class·​server | 24 | class·​server
26 | ·​·​:​·​private·​boost:​:​noncopyable |
27 | { | 25 | {
28 | public:​ | 26 | public:​
| 27 | ·​·​server(const·​server&)​·​=·​delete;​
| 28 | ·​·​server&·​operator=(const·​server&)​·​=·​delete;​
| 29 |
29 | ·​·​/​/​/​·​Construct·​the·​server·​to·​listen·​on·​the·​specified·​TCP·​address·​and·​port,​·​and | 30 | ·​·​/​/​/​·​Construct·​the·​server·​to·​listen·​on·​the·​specified·​TCP·​address·​and·​port,​·​and
30 | ·​·​/​/​/​·​serve·​up·​files·​from·​the·​given·​directory.​ | 31 | ·​·​/​/​/​·​serve·​up·​files·​from·​the·​given·​directory.​
31 | ·​·​explicit·​server(const·​std:​:​string&·​address,​·​const·​std:​:​string&·​port,​ | 32 | ·​·​explicit·​server(const·​std:​:​string&·​address,​·​const·​std:​:​string&·​port,​
32 | ·​·​·​·​·​·​const·​std:​:​string&·​doc_root)​;​ | 33 | ·​·​·​·​·​·​const·​std:​:​string&·​doc_root)​;​
33 |  | 34 |
34 | ·​·​/​/​/​·​Run·​the·​server's·​io_context·​loop.​ | 35 | ·​·​/​/​/​·​Run·​the·​server's·​io_context·​loop.​
35 | ·​·​void·​run()​;​ | 36 | ·​·​void·​run()​;​
36 |  | 37 |
37 | private:​ | 38 | private:​
38 | ·​·​/​/​/​·​Initiate·​an·​asynchronous·​accept·​operation.​ | 39 | ·​·​/​/​/​·​Perform·​an·​asynchronous·​accept·​operation.​
39 | ·​·​void·​start_accept()​;​ | 40 | ·​·​void·​do_accept()​;​
40 |  |
41 | ·​·​/​/​/​·​Handle·​completion·​of·​an·​asynchronous·​accept·​operation.​ |
42 | ·​·​void·​handle_accept(const·​asio:​:​error_code&·​e)​;​ |
43 |  | 41 |
44 | ·​·​/​/​/​·​Handle·​a·​request·​to·​stop·​the·​server.​ | 42 | ·​·​/​/​/​·​Wait·​for·​a·​request·​to·​stop·​the·​server.​
45 | ·​·​void·​handle_stop()​;​ | 43 | ·​·​void·​do_await_stop()​;​
46 |  | 44 |
47 | ·​·​/​/​/​·​The·​io_context·​used·​to·​perform·​asynchronous·​operations.​ | 45 | ·​·​/​/​/​·​The·​io_context·​used·​to·​perform·​asynchronous·​operations.​
48 | ·​·​asio:​:​io_context·​io_context_;​ | 46 | ·​·​asio:​:​io_context·​io_context_;​
49 |  | 47 |
50 | ·​·​/​/​/​·​The·​signal_set·​is·​used·​to·​register·​for·​process·​termination·​notifications.​ | 48 | ·​·​/​/​/​·​The·​signal_set·​is·​used·​to·​register·​for·​process·​termination·​notifications.​
51 | ·​·​asio:​:​signal_set·​signals_;​ | 49 | ·​·​asio:​:​signal_set·​signals_;​
52 |  | 50 |
53 | ·​·​/​/​/​·​Acceptor·​used·​to·​listen·​for·​incoming·​connections.​ | 51 | ·​·​/​/​/​·​Acceptor·​used·​to·​listen·​for·​incoming·​connections.​
54 | ·​·​asio:​:​ip:​:​tcp:​:​acceptor·​acceptor_;​ | 52 | ·​·​asio:​:​ip:​:​tcp:​:​acceptor·​acceptor_;​
55 |  | 53 |
56 | ·​·​/​/​/​·​The·​connection·​manager·​which·​owns·​all·​live·​connections.​ | 54 | ·​·​/​/​/​·​The·​connection·​manager·​which·​owns·​all·​live·​connections.​
57 | ·​·​connection_manager·​connection_manager_;​ | 55 | ·​·​connection_manager·​connection_manager_;​
58 |  | 56 |
59 | ·​·​/​/​/​·​The·​next·​connection·​to·​be·​accepted.​ |
60 | ·​·​connection_ptr·​new_connection_;​ |
61 |  |
62 | ·​·​/​/​/​·​The·​handler·​for·​all·​incoming·​requests.​ | 57 | ·​·​/​/​/​·​The·​handler·​for·​all·​incoming·​requests.​
63 | ·​·​request_handler·​request_handler_;​ | 58 | ·​·​request_handler·​request_handler_;​
64 | };​ | 59 | };​
65 |  | 60 |
66 | }·​/​/​·​namespace·​server | 61 | }·​/​/​·​namespace·​server
67 | }·​/​/​·​namespace·​http | 62 | }·​/​/​·​namespace·​http
68 |  | 63 |
69 | #endif·​/​/​·​HTTP_SERVER_HPP | 64 | #endif·​/​/​·​HTTP_SERVER_HPP