#pragma once #include #include #include #include #include namespace connector { struct HttpRequest { std::string method; std::string target; std::string path; std::map query; std::map headers; std::string body; }; struct HttpResponse { int status = 200; std::map headers; std::string body; }; using RequestHandler = std::function; class HttpServer { public: HttpServer(); ~HttpServer(); bool start(unsigned short port, RequestHandler handler, std::string& error); void stop(); bool running() const { return running_.load(); } private: void accept_loop(); std::atomic running_{false}; std::intptr_t socket_ = -1; RequestHandler handler_; void* thread_ = nullptr; }; } // namespace connector