/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Benchmark { enum METRIC_TYPE { DURATION, SUCCESS }; struct Dimension { std::string name; std::string value; }; struct Metric { std::string name; METRIC_TYPE metricType; std::vector dimensions; std::string value; }; class MetricsEmitter { public: virtual ~MetricsEmitter() = default; virtual void EmitMetricForOp(const std::string &metricName, const std::vector &dimensions, const std::function &op) const = 0; protected: std::vector CreateMetricsForOp(const std::string &metricName, const std::vector &dimensions, const std::function &op) const; }; }