// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include #include #include #include namespace zen { class SessionsService; class HttpSessionsService final : public HttpService, public IHttpStatusProvider, public IHttpStatsProvider { public: HttpSessionsService(HttpStatusService& StatusService, HttpStatsService& StatsService, SessionsService& Sessions); virtual ~HttpSessionsService(); virtual const char* BaseUri() const override; virtual void HandleRequest(HttpServerRequest& Request) override; virtual CbObject CollectStats() override; virtual void HandleStatsRequest(HttpServerRequest& Request) override; virtual void HandleStatusRequest(HttpServerRequest& Request) override; private: struct SessionsStats { std::atomic_uint64_t SessionReadCount{}; std::atomic_uint64_t SessionWriteCount{}; std::atomic_uint64_t SessionDeleteCount{}; std::atomic_uint64_t SessionListCount{}; std::atomic_uint64_t RequestCount{}; std::atomic_uint64_t BadRequestCount{}; }; inline LoggerRef Log() { return m_Log; } LoggerRef m_Log; void Initialize(); void ListSessionsRequest(HttpRouterRequest& Req); void SessionRequest(HttpRouterRequest& Req); HttpStatusService& m_StatusService; HttpStatsService& m_StatsService; HttpRequestRouter m_Router; SessionsService& m_Sessions; SessionsStats m_SessionsStats; metrics::OperationTiming m_HttpRequests; }; } // namespace zen