#ifndef HTTPSERVER_HPP #define HTTPSERVER_HPP #include #include #include #include using namespace std; using namespace boost::asio; struct Request { string method, path, http_version; shared_ptr content; unordered_map header; }; class HTTPServer { public: unordered_map > > resources; HTTPServer(unsigned short, size_t); void start(); private: io_service m_io_service; ip::tcp::endpoint endpoint; ip::tcp::acceptor acceptor; size_t num_threads; vector threads; void accept(); void process_request_and_respond(shared_ptr socket); Request parse_request(istream& stream); void respond(shared_ptr socket, shared_ptr request); }; #endif /* HTTPSERVER_HPP */