Gems/AWSMetrics/Code/Source/ClientConfiguration.cpp (106 lines of code) (raw):

/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include <ClientConfiguration.h> #include <AzCore/IO/FileIO.h> #include <AzCore/Settings/SettingsRegistryImpl.h> #include <AzCore/Settings/SettingsRegistryMergeUtils.h> #include <AzCore/std/smart_ptr/unique_ptr.h> #include <AzFramework/StringFunc/StringFunc.h> namespace AWSMetrics { // Initialize the settings based on the default values in awsMetricsClientConfiguration.setreg. ClientConfiguration::ClientConfiguration() : m_maxQueueSizeInMb(0.3) , m_queueFlushPeriodInSeconds(60) , m_offlineRecordingEnabled(false) , m_maxNumRetries(1) { } bool ClientConfiguration::InitClientConfiguration() { AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get(); if (!settingsRegistry) { AZ_Warning("AWSMetrics", false, "Failed to load the setting registry"); return false; } if (!settingsRegistry->Get( m_maxQueueSizeInMb, AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxQueueSizeInMbKey))) { AZ_Warning("AWSMetrics", false, "Failed to read the maximum queue size setting from the setting registry"); return false; } if (!settingsRegistry->Get( m_queueFlushPeriodInSeconds, AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsQueueFlushPeriodInSecondsKey))) { AZ_Warning("AWSMetrics", false, "Failed to read the queue flush period setting from the setting registry"); return false; } bool enableOfflineRecording = false; if (!settingsRegistry->Get( enableOfflineRecording, AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsOfflineRecordingEnabledKey))) { AZ_Warning("AWSMetrics", false, "Failed to read the submission target setting from the setting registry"); return false; } m_offlineRecordingEnabled = enableOfflineRecording; if (!settingsRegistry->Get( m_maxNumRetries, AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxNumRetriesKey))) { AZ_Warning("AWSMetrics", false, "Failed to read the maximum number of retries setting in the configuration file"); return false; } return ResolveMetricsFilePath(); } bool ClientConfiguration::ResolveMetricsFilePath() { AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetDirectInstance(); if (!fileIO) { AZ_Error("AWSMetrics", false, "No FileIoBase Instance"); return false; } char resolvedPath[AZ_MAX_PATH_LEN] = { 0 }; if (!fileIO->ResolvePath(AwsMetricsLocalFileDir, resolvedPath, AZ_MAX_PATH_LEN)) { AZ_Error("AWSMetrics", false, "Failed to resolve the metrics file directory"); return false; } m_metricsDir = resolvedPath; if (!AzFramework::StringFunc::Path::Join(resolvedPath, AwsMetricsLocalFileName, m_metricsFilePath)) { AZ_Error("AWSMetrics", false, "Failed to construct the metrics file path"); return false; } return true; } AZ::s64 ClientConfiguration::GetMaxQueueSizeInBytes() const { return static_cast<AZ::s64>(m_maxQueueSizeInMb * 1000000); } AZ::s64 ClientConfiguration::GetQueueFlushPeriodInSeconds() const { return m_queueFlushPeriodInSeconds; } bool ClientConfiguration::OfflineRecordingEnabled() const { return m_offlineRecordingEnabled; } AZ::s64 ClientConfiguration::GetMaxNumRetries() const { return m_maxNumRetries; } const char* ClientConfiguration::GetMetricsFileDir() const { return m_metricsDir.c_str(); } const char* ClientConfiguration::GetMetricsFileFullPath() const { return m_metricsFilePath.c_str(); } void ClientConfiguration::UpdateOfflineRecordingStatus(bool enable) { m_offlineRecordingEnabled = enable; } }