// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "config.h" #include namespace zen { class StatsDaemonClient; class StatsProvider { public: virtual void ReportMetrics(StatsDaemonClient& Statsd) = 0; }; class StatsReporter { public: StatsReporter(); ~StatsReporter(); StatsReporter& operator=(const StatsReporter&) = delete; StatsReporter(const StatsReporter&) = delete; void Initialize(const ZenStatsConfig& Config); void Shutdown(); void AddProvider(StatsProvider* Provider); void ReportStats(); private: RwLock m_Lock; std::unique_ptr m_Statsd; std::vector m_Providers; }; } // namespace zen