| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * 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
- *
- */
- #pragma once
- #include <AzCore/JSON/document.h>
- #include <AzCore/RTTI/TypeInfo.h>
- #include <AzCore/std/containers/variant.h>
- #include <AzCore/std/string/string.h>
- namespace AWSCore
- {
- class JsonWriter;
- }
- namespace AWSMetrics
- {
- //! MetricsAttribute represents one attribute of the metrics.
- //! Attribute value can be int, double or string.
- //! e.g. name: event_name, value: login
- class MetricsAttribute
- {
- public:
- AZ_TYPE_INFO(MetricsAttribute, "{6483F481-0C18-4171-8B59-A44F2F28EAE5}")
- MetricsAttribute(const AZStd::string& name, int intVal);
- MetricsAttribute(const AZStd::string& name, double doubleVal);
- MetricsAttribute(const AZStd::string& name, const AZStd::string& strVal);
- MetricsAttribute();
- void SetName(const AZStd::string& name);
- AZStd::string GetName() const;
- void SetVal(const AZStd::string& val);
- void SetVal(int val);
- void SetVal(double val);
- AZStd::variant<int, double, AZStd::string> GetVal() const;
- //! Get the metrics attribute size serialized to json.
- //! @return metrics attribute size in bytes.
- size_t GetSizeInBytes() const;
- //! Check whether the attribute is one of the default attributes.
- //! @return Whether the attribute is a default one.
- bool IsDefault() const;
- //! Serialize the metrics attribute to JSON for sending requests.
- //! @param writer JSON writer for the serialization.
- //! @return Whether the metrics attribute is serialized successfully.
- bool SerializeToJson(AWSCore::JsonWriter& writer) const;
- //! Read from a JSON value to the metrics attribute.
- //! @param name JSON value used for the attribute name.
- //! @param name JSON value used for the attribute value.
- //! @return Whether the metrics attribute is created successfully
- bool ReadFromJson(const rapidjson::Value& name, const rapidjson::Value& val);
- private:
- //! Set the attribute as default if its name is in the default attributes list.
- //! @param name Name of the attribute.
- void SetIfDefault(const AZStd::string& name);
- enum class VAL_TYPE
- {
- INT,
- DOUBLE,
- STR
- };
- AZStd::string m_name; //!< Name of the attribute.
- AZStd::variant<int, double, AZStd::string> m_val; //!< Value of the attribute.
- bool m_isDefault; //!< Whether the attribute is one of the default attributes.
- };
- } // namespace AWSMetrics
|