// Copyright Epic Games, Inc. All Rights Reserved. #include "statsreporter.h" #include #include #include namespace zen { StatsReporter::StatsReporter() { } StatsReporter::~StatsReporter() { } void StatsReporter::Initialize(const ZenStatsConfig& Config) { ZEN_TRACE_CPU("StatsReporter::Initialize"); RwLock::ExclusiveLockScope _(m_Lock); if (Config.Enabled) { ZEN_INFO("initializing stats reporter: {}:{}", Config.StatsdHost, Config.StatsdPort) m_Statsd = CreateStatsDaemonClient(Config.StatsdHost, gsl::narrow(Config.StatsdPort)); m_Statsd->SetMessageSize(1500, false); } } void StatsReporter::Shutdown() { RwLock::ExclusiveLockScope _(m_Lock); m_Statsd.reset(); } void StatsReporter::AddProvider(StatsProvider* Provider) { RwLock::ExclusiveLockScope _(m_Lock); m_Providers.push_back(Provider); } void StatsReporter::ReportStats() { RwLock::ExclusiveLockScope _(m_Lock); if (m_Statsd) { for (StatsProvider* Provider : m_Providers) { Provider->ReportMetrics(*m_Statsd); } m_Statsd->Flush(); } } } // namespace zen