#ifndef HTTP_SERVER3_SERVER_HPP
#define HTTP_SERVER3_SERVER_HPP
#include <boost/asio.hpp>
#include <string>
#include "request_handler.hpp"
namespace http {
namespace server3 {
class server
{
public:
server(const server&) = delete;
server& operator=(const server&) = delete;
explicit server(const std::string& address, const std::string& port,
const std::string& doc_root, std::size_t thread_pool_size);
void run();
private:
void do_accept();
void do_await_stop();
std::size_t thread_pool_size_;
boost::asio::io_context io_context_;
boost::asio::signal_set signals_;
boost::asio::ip::tcp::acceptor acceptor_;
request_handler request_handler_;
};
} }
#endif