// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include #include #include namespace zen { struct IHttpStatusProvider { virtual void HandleStatusRequest(HttpServerRequest& Request) = 0; }; class HttpStatusService : public HttpService { public: HttpStatusService(); ~HttpStatusService(); virtual const char* BaseUri() const override; virtual void HandleRequest(HttpServerRequest& Request) override; void RegisterHandler(std::string_view Id, IHttpStatusProvider& Provider); void UnregisterHandler(std::string_view Id, IHttpStatusProvider& Provider); private: spdlog::logger& m_Log; HttpRequestRouter m_Router; RwLock m_Lock; std::map m_Providers; inline spdlog::logger& Log() { return m_Log; } }; } // namespace zen