#ifndef ROUTER_H #define ROUTER_H #include "request.hpp" #include "response.hpp" #include "tree.hpp" #include #include #include #include #include #include #include namespace http { class Router { private: std::map> m_routes; int m_socket; sockaddr_in m_address; Response Route(Request req); private: std::mutex m_mutex; std::condition_variable m_cond; std::vector m_threads; std::queue m_clients; bool m_should_terminate = false; void start_thread_loop(); void thread_loop(); void queue_client(int client); void stop_thread_loop(); public: Router(int port); void handle(std::string path_pattern, std::function func); int start(); int stop(); }; } // namespace http #endif // !ROUTER_H