in cloudwatch_metrics_common/include/cloudwatch_metrics_common/utils/metric_object.h [118:163]
static MetricDatum metricObjectToDatum(const MetricObject &metrics, const int64_t timestamp) {
MetricDatum datum;
Aws::String aws_metric_name(metrics.metric_name.c_str());
Aws::Utils::DateTime date_time(timestamp);
datum.WithMetricName(aws_metric_name).WithTimestamp(date_time);
if (metrics.statistic_values.empty()) {
datum.SetValue(metrics.value);
} else {
Aws::CloudWatch::Model::StatisticSet stats;
for (const auto & keyval : metrics.statistic_values) {
if (keyval.first == StatisticValuesType::MINIMUM) {
stats.SetMinimum(keyval.second);
} else if (keyval.first == StatisticValuesType::MAXIMUM) {
stats.SetMaximum(keyval.second);
} else if (keyval.first == StatisticValuesType::SUM) {
stats.SetSum(keyval.second);
} else if (keyval.first == StatisticValuesType::SAMPLE_COUNT) {
stats.SetSampleCount(keyval.second);
}
}
datum.SetStatisticValues(stats);
}
auto mapped_unit = units_mapper.find(metrics.unit);
if (units_mapper.end() != mapped_unit) {
datum.SetUnit(mapped_unit->second);
} else {
Aws::String unit_name(metrics.unit.c_str());
datum.SetUnit(Aws::CloudWatch::Model::StandardUnitMapper::GetStandardUnitForName(unit_name));
}
for (const auto & it : metrics.dimensions) {
Aws::CloudWatch::Model::Dimension dimension;
Aws::String name(it.first.c_str());
Aws::String d_value(it.second.c_str());
dimension.WithName(name).WithValue(d_value);
datum.AddDimensions(dimension);
}
datum.SetStorageResolution(metrics.storage_resolution);
return datum;
}