]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/exporters/ostream/src/metrics_exporter.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / exporters / ostream / src / metrics_exporter.cc
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #ifdef ENABLE_METRICS_PREVIEW
5 # include "opentelemetry/exporters/ostream/metrics_exporter.h"
6
7 OPENTELEMETRY_BEGIN_NAMESPACE
8 namespace exporter
9 {
10 namespace metrics
11 {
12
13 OStreamMetricsExporter::OStreamMetricsExporter(std::ostream &sout) noexcept : sout_(sout) {}
14
15 sdk::common::ExportResult OStreamMetricsExporter::Export(
16 const std::vector<sdk::metrics::Record> &records) noexcept
17 {
18 for (auto record : records)
19 {
20 sout_ << "{"
21 << "\n name : " << record.GetName()
22 << "\n description : " << record.GetDescription()
23 << "\n labels : " << record.GetLabels();
24
25 auto aggregator = record.GetAggregator();
26
27 /**
28 * Unpack the AggregatorVariant from the record so we can pass the data type to
29 * PrintAggregatorVariant to unpack the Aggregator from the variant.
30 */
31 if (nostd::holds_alternative<std::shared_ptr<opentelemetry::sdk::metrics::Aggregator<int>>>(
32 aggregator))
33 {
34 PrintAggregatorVariant<int>(aggregator);
35 }
36 else if (nostd::holds_alternative<
37 std::shared_ptr<opentelemetry::sdk::metrics::Aggregator<short>>>(aggregator))
38 {
39 PrintAggregatorVariant<short>(aggregator);
40 }
41 else if (nostd::holds_alternative<
42 std::shared_ptr<opentelemetry::sdk::metrics::Aggregator<double>>>(aggregator))
43 {
44 PrintAggregatorVariant<double>(aggregator);
45 }
46 else if (nostd::holds_alternative<
47 std::shared_ptr<opentelemetry::sdk::metrics::Aggregator<float>>>(aggregator))
48 {
49 PrintAggregatorVariant<float>(aggregator);
50 }
51 sout_ << "\n}\n";
52 }
53 return sdk::common::ExportResult::kSuccess;
54 }
55
56 } // namespace metrics
57 } // namespace exporter
58 OPENTELEMETRY_END_NAMESPACE
59 #endif