ClientConfiguration.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <ClientConfiguration.h>
  9. #include <AzCore/IO/FileIO.h>
  10. #include <AzCore/Settings/SettingsRegistryImpl.h>
  11. #include <AzCore/Settings/SettingsRegistryMergeUtils.h>
  12. #include <AzCore/std/smart_ptr/unique_ptr.h>
  13. #include <AzFramework/StringFunc/StringFunc.h>
  14. namespace AWSMetrics
  15. {
  16. // Initialize the settings based on the default values in awsMetricsClientConfiguration.setreg.
  17. ClientConfiguration::ClientConfiguration()
  18. : m_maxQueueSizeInMb(0.3)
  19. , m_queueFlushPeriodInSeconds(60)
  20. , m_offlineRecordingEnabled(false)
  21. , m_maxNumRetries(1)
  22. {
  23. }
  24. bool ClientConfiguration::InitClientConfiguration()
  25. {
  26. AZ::SettingsRegistryInterface* settingsRegistry = AZ::SettingsRegistry::Get();
  27. if (!settingsRegistry)
  28. {
  29. AZ_Warning("AWSMetrics", false, "Failed to load the setting registry");
  30. return false;
  31. }
  32. if (!settingsRegistry->Get(
  33. m_maxQueueSizeInMb,
  34. AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxQueueSizeInMbKey)))
  35. {
  36. AZ_Warning("AWSMetrics", false, "Failed to read the maximum queue size setting from the setting registry");
  37. return false;
  38. }
  39. if (!settingsRegistry->Get(
  40. m_queueFlushPeriodInSeconds,
  41. AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsQueueFlushPeriodInSecondsKey)))
  42. {
  43. AZ_Warning("AWSMetrics", false, "Failed to read the queue flush period setting from the setting registry");
  44. return false;
  45. }
  46. bool enableOfflineRecording = false;
  47. if (!settingsRegistry->Get(
  48. enableOfflineRecording,
  49. AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsOfflineRecordingEnabledKey)))
  50. {
  51. AZ_Warning("AWSMetrics", false, "Failed to read the submission target setting from the setting registry");
  52. return false;
  53. }
  54. m_offlineRecordingEnabled = enableOfflineRecording;
  55. if (!settingsRegistry->Get(
  56. m_maxNumRetries,
  57. AZStd::string::format("%s%s", AZ::SettingsRegistryMergeUtils::OrganizationRootKey, AWSMetricsMaxNumRetriesKey)))
  58. {
  59. AZ_Warning("AWSMetrics", false, "Failed to read the maximum number of retries setting in the configuration file");
  60. return false;
  61. }
  62. return ResolveMetricsFilePath();
  63. }
  64. bool ClientConfiguration::ResolveMetricsFilePath()
  65. {
  66. AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetDirectInstance();
  67. if (!fileIO)
  68. {
  69. AZ_Error("AWSMetrics", false, "No FileIoBase Instance");
  70. return false;
  71. }
  72. char resolvedPath[AZ_MAX_PATH_LEN] = { 0 };
  73. if (!fileIO->ResolvePath(AwsMetricsLocalFileDir, resolvedPath, AZ_MAX_PATH_LEN))
  74. {
  75. AZ_Error("AWSMetrics", false, "Failed to resolve the metrics file directory");
  76. return false;
  77. }
  78. m_metricsDir = resolvedPath;
  79. if (!AzFramework::StringFunc::Path::Join(resolvedPath, AwsMetricsLocalFileName, m_metricsFilePath))
  80. {
  81. AZ_Error("AWSMetrics", false, "Failed to construct the metrics file path");
  82. return false;
  83. }
  84. return true;
  85. }
  86. AZ::s64 ClientConfiguration::GetMaxQueueSizeInBytes() const
  87. {
  88. return static_cast<AZ::s64>(m_maxQueueSizeInMb * 1000000);
  89. }
  90. AZ::s64 ClientConfiguration::GetQueueFlushPeriodInSeconds() const
  91. {
  92. return m_queueFlushPeriodInSeconds;
  93. }
  94. bool ClientConfiguration::OfflineRecordingEnabled() const
  95. {
  96. return m_offlineRecordingEnabled;
  97. }
  98. AZ::s64 ClientConfiguration::GetMaxNumRetries() const
  99. {
  100. return m_maxNumRetries;
  101. }
  102. const char* ClientConfiguration::GetMetricsFileDir() const
  103. {
  104. return m_metricsDir.c_str();
  105. }
  106. const char* ClientConfiguration::GetMetricsFileFullPath() const
  107. {
  108. return m_metricsFilePath.c_str();
  109. }
  110. void ClientConfiguration::UpdateOfflineRecordingStatus(bool enable)
  111. {
  112. m_offlineRecordingEnabled = enable;
  113. }
  114. }