From 3de9a65cd990f2a4f5395b7e2a094471633eb98b Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 11 Dec 2025 09:34:24 +0100 Subject: HTTP server API changes for improved extensibility (#684) * refactored `HttpServer` so all subclass member functions are proctected, to make it easier to extend base functionality * added API service, can be used to enumerate registered endpoints (at `/api`). Currently only very basic information is provided --- src/zenhttp/httpserver.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src/zenhttp/httpserver.cpp') diff --git a/src/zenhttp/httpserver.cpp b/src/zenhttp/httpserver.cpp index 1357f1b9b..e529fb76e 100644 --- a/src/zenhttp/httpserver.cpp +++ b/src/zenhttp/httpserver.cpp @@ -990,6 +990,49 @@ HttpRequestRouter::HandleRequest(zen::HttpServerRequest& Request) ////////////////////////////////////////////////////////////////////////// +int +HttpServer::Initialize(int BasePort, std::filesystem::path DataDir) +{ + return OnInitialize(BasePort, std::move(DataDir)); +} + +void +HttpServer::Run(bool IsInteractiveSession) +{ + OnRun(IsInteractiveSession); +} + +void +HttpServer::RequestExit() +{ + OnRequestExit(); +} +void +HttpServer::Close() +{ + OnClose(); +} + +void +HttpServer::RegisterService(HttpService& Service) +{ + OnRegisterService(Service); + m_KnownServices.push_back(&Service); +} + +void +HttpServer::EnumerateServices(std::function&& Callback) +{ + // This doesn't take a lock because services should only be registered during + // server initialization, before it starts accepting requests + for (HttpService* Service : m_KnownServices) + { + Callback(*Service); + } +} + +////////////////////////////////////////////////////////////////////////// + HttpRpcHandler::HttpRpcHandler() { } -- cgit v1.2.3