1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
4 #ifdef ENABLE_METRICS_PREVIEW
5 # include "opentelemetry/exporters/ostream/metrics_exporter.h"
7 OPENTELEMETRY_BEGIN_NAMESPACE
13 OStreamMetricsExporter::OStreamMetricsExporter(std::ostream
&sout
) noexcept
: sout_(sout
) {}
15 sdk::common::ExportResult
OStreamMetricsExporter::Export(
16 const std::vector
<sdk::metrics::Record
> &records
) noexcept
18 for (auto record
: records
)
21 << "\n name : " << record
.GetName()
22 << "\n description : " << record
.GetDescription()
23 << "\n labels : " << record
.GetLabels();
25 auto aggregator
= record
.GetAggregator();
28 * Unpack the AggregatorVariant from the record so we can pass the data type to
29 * PrintAggregatorVariant to unpack the Aggregator from the variant.
31 if (nostd::holds_alternative
<std::shared_ptr
<opentelemetry::sdk::metrics::Aggregator
<int>>>(
34 PrintAggregatorVariant
<int>(aggregator
);
36 else if (nostd::holds_alternative
<
37 std::shared_ptr
<opentelemetry::sdk::metrics::Aggregator
<short>>>(aggregator
))
39 PrintAggregatorVariant
<short>(aggregator
);
41 else if (nostd::holds_alternative
<
42 std::shared_ptr
<opentelemetry::sdk::metrics::Aggregator
<double>>>(aggregator
))
44 PrintAggregatorVariant
<double>(aggregator
);
46 else if (nostd::holds_alternative
<
47 std::shared_ptr
<opentelemetry::sdk::metrics::Aggregator
<float>>>(aggregator
))
49 PrintAggregatorVariant
<float>(aggregator
);
53 return sdk::common::ExportResult::kSuccess
;
56 } // namespace metrics
57 } // namespace exporter
58 OPENTELEMETRY_END_NAMESPACE