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