Sha256: f8c71d9c2ecd53ed99a42c7473828ee1e2d4f7ed991a6f54762006ebc6ca0498
Contents?: true
Size: 1.82 KB
Versions: 16
Compression:
Stored size: 1.82 KB
Contents
// // server.hpp // ~~~~~~~~~~ // // Copyright (c) 2003-2020 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_SERVER3_SERVER_HPP #define HTTP_SERVER3_SERVER_HPP #include <asio.hpp> #include <string> #include <vector> #include <boost/noncopyable.hpp> #include <boost/shared_ptr.hpp> #include "connection.hpp" #include "request_handler.hpp" namespace http { namespace server3 { /// The top-level class of the HTTP server. class server : private boost::noncopyable { public: /// 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 thread_pool_size); /// Run the server's io_context loop. void run(); private: /// Initiate an asynchronous accept operation. void start_accept(); /// Handle completion of an asynchronous accept operation. void handle_accept(const asio::error_code& e); /// Handle a request to stop the server. void handle_stop(); /// The number of threads that will call io_context::run(). std::size_t thread_pool_size_; /// The io_context used to perform asynchronous operations. asio::io_context io_context_; /// 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 next connection to be accepted. connection_ptr new_connection_; /// The handler for all incoming requests. request_handler request_handler_; }; } // namespace server3 } // namespace http #endif // HTTP_SERVER3_SERVER_HPP
Version data entries
16 entries across 16 versions & 1 rubygems