static MetricDatum metricObjectToDatum()

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;
}