| #ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_TRUE_HITLESS_TRUE_HITLESS_METRICS_PARSER_H_ |
| #define THIRD_PARTY_MILOTIC_EXTERNAL_CC_TRUE_HITLESS_TRUE_HITLESS_METRICS_PARSER_H_ |
| |
| #include <string> |
| |
| #include "absl/status/statusor.h" |
| #include "absl/strings/string_view.h" |
| #include <nlohmann/json.hpp> |
| #include "tlbmc/true_hitless_metrics.pb.h" |
| |
| namespace milotic_tlbmc { |
| |
| class TrueHitlessMetricsParser { |
| public: |
| explicit TrueHitlessMetricsParser( |
| absl::string_view true_hitless_metrics_path); |
| |
| TrueHitlessMetricsParser() = default; |
| |
| TrueHitlessMetrics ParseTrueHitlessMetricsFromJson() const; |
| |
| protected: |
| static absl::StatusOr<ServiceStatus> ConvertStringToServiceStatus( |
| absl::string_view status); |
| static absl::StatusOr<ActivationState> ParseActivationStateFromJson( |
| const nlohmann::json& json); |
| static absl::StatusOr<EmmcAvailabilityTargets> |
| ParseEmmcAvailabilityTargetsFromJson(const nlohmann::json& emmc_status_json); |
| static absl::StatusOr<IntermediateState> ParseIntermediateStateFromJson( |
| const nlohmann::json& json); |
| static absl::StatusOr<ManagedServices> ParseManagedServicesFromJson( |
| const nlohmann::json::array_t& managed_services_json); |
| static absl::StatusOr<VersionState> ParseVersionStateFromJson( |
| const nlohmann::json& json); |
| |
| private: |
| // Path to the true hitless metrics file. |
| std::string true_hitless_metrics_path_; |
| }; |
| |
| } // namespace milotic_tlbmc |
| |
| #endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_TRUE_HITLESS_TRUE_HITLESS_METRICS_PARSER_H_ |