diff options
Diffstat (limited to '3rdparty/asio/src/examples/cpp11/http/server2/server.hpp')
-rw-r--r-- | 3rdparty/asio/src/examples/cpp11/http/server2/server.hpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/3rdparty/asio/src/examples/cpp11/http/server2/server.hpp b/3rdparty/asio/src/examples/cpp11/http/server2/server.hpp new file mode 100644 index 00000000000..9d34a77ed7c --- /dev/null +++ b/3rdparty/asio/src/examples/cpp11/http/server2/server.hpp @@ -0,0 +1,60 @@ +// +// server.hpp +// ~~~~~~~~~~ +// +// Copyright (c) 2003-2024 Christopher M. Kohlhoff (chris at kohlhoff dot com) +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// + +#ifndef HTTP_SERVER2_SERVER_HPP +#define HTTP_SERVER2_SERVER_HPP + +#include <asio.hpp> +#include <string> +#include "io_context_pool.hpp" +#include "request_handler.hpp" + +namespace http { +namespace server2 { + +/// The top-level class of the HTTP server. +class server +{ +public: + server(const server&) = delete; + server& operator=(const server&) = delete; + + /// Construct the server to listen on the specified TCP address and port, and + /// serve up files from the given directory. + explicit server(const std::string& address, const std::string& port, + const std::string& doc_root, std::size_t io_context_pool_size); + + /// Run the server's io_context loop. + void run(); + +private: + /// Perform an asynchronous accept operation. + void do_accept(); + + /// Wait for a request to stop the server. + void do_await_stop(); + + /// The pool of io_context objects used to perform asynchronous operations. + io_context_pool io_context_pool_; + + /// The signal_set is used to register for process termination notifications. + asio::signal_set signals_; + + /// Acceptor used to listen for incoming connections. + asio::ip::tcp::acceptor acceptor_; + + /// The handler for all incoming requests. + request_handler request_handler_; +}; + +} // namespace server2 +} // namespace http + +#endif // HTTP_SERVER2_SERVER_HPP |