| // Copyright 2022 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "src/developer/forensics/feedback/annotations/metrics.h" | |
| #include <map> | |
| #include "src/developer/forensics/feedback/annotations/constants.h" | |
| #include "src/developer/forensics/utils/cobalt/logger.h" | |
| #include "src/developer/forensics/utils/cobalt/metrics.h" | |
| namespace forensics::feedback { | |
| namespace { | |
| static const auto* const kTimedOutMetrics = new std::map<std::string, cobalt::TimedOutData>({ | |
| // Board info | |
| {kHardwareBoardNameKey, cobalt::TimedOutData::kBoardInfo}, | |
| {kHardwareBoardRevisionKey, cobalt::TimedOutData::kBoardInfo}, | |
| // Product info | |
| {kHardwareProductLanguageKey, cobalt::TimedOutData::kProductInfo}, | |
| {kHardwareProductLocaleListKey, cobalt::TimedOutData::kProductInfo}, | |
| {kHardwareProductManufacturerKey, cobalt::TimedOutData::kProductInfo}, | |
| {kHardwareProductModelKey, cobalt::TimedOutData::kProductInfo}, | |
| {kHardwareProductNameKey, cobalt::TimedOutData::kProductInfo}, | |
| {kHardwareProductRegulatoryDomainKey, cobalt::TimedOutData::kProductInfo}, | |
| {kHardwareProductSKUKey, cobalt::TimedOutData::kProductInfo}, | |
| // Channel | |
| {kSystemUpdateChannelCurrentKey, cobalt::TimedOutData::kChannel}, | |
| {kSystemUpdateChannelTargetKey, cobalt::TimedOutData::kChannel}, | |
| }); | |
| } // namespace | |
| AnnotationMetrics::AnnotationMetrics(cobalt::Logger* cobalt) : cobalt_(cobalt) {} | |
| void AnnotationMetrics::LogMetrics(const Annotations& annotations) { | |
| std::set<cobalt::TimedOutData> to_log; | |
| for (const auto& [k, v] : annotations) { | |
| if (v == Error::kTimeout && kTimedOutMetrics->count(k) != 0) { | |
| to_log.insert(kTimedOutMetrics->at(k)); | |
| } | |
| } | |
| for (const cobalt::TimedOutData metric : to_log) { | |
| cobalt_->LogOccurrence(metric); | |
| } | |
| } | |
| } // namespace forensics::feedback |