10 #include "opentelemetry/common/key_value_iterable.h"
11 #include "opentelemetry/context/context.h"
12 #include "opentelemetry/metrics/sync_instruments.h"
13 #include "opentelemetry/sdk/metrics/instruments.h"
14 #include "opentelemetry/sdk/metrics/state/metric_storage.h"
15 #include "opentelemetry/version.h"
27 std::unique_ptr<SyncWritableMetricStorage> storage)
33 std::unique_ptr<SyncWritableMetricStorage>
storage_;
36 class LongCounter :
public Synchronous,
public opentelemetry::metrics::Counter<uint64_t>
39 LongCounter(
const InstrumentDescriptor &instrument_descriptor,
40 std::unique_ptr<SyncWritableMetricStorage> storage);
42 void Add(uint64_t value,
43 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
45 void Add(uint64_t value,
46 const opentelemetry::common::KeyValueIterable &attributes,
47 const opentelemetry::context::Context &
context) noexcept
override;
49 void Add(uint64_t value) noexcept
override;
51 void Add(uint64_t value,
const opentelemetry::context::Context &
context) noexcept
override;
54 class DoubleCounter :
public Synchronous,
public opentelemetry::metrics::Counter<double>
58 DoubleCounter(
const InstrumentDescriptor &instrument_descriptor,
59 std::unique_ptr<SyncWritableMetricStorage> storage);
61 void Add(
double value,
62 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
63 void Add(
double value,
64 const opentelemetry::common::KeyValueIterable &attributes,
65 const opentelemetry::context::Context &
context) noexcept
override;
67 void Add(
double value) noexcept
override;
68 void Add(
double value,
const opentelemetry::context::Context &
context) noexcept
override;
71 class LongUpDownCounter :
public Synchronous,
public opentelemetry::metrics::UpDownCounter<int64_t>
75 std::unique_ptr<SyncWritableMetricStorage> storage);
77 void Add(int64_t value,
78 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
79 void Add(int64_t value,
80 const opentelemetry::common::KeyValueIterable &attributes,
81 const opentelemetry::context::Context &
context) noexcept
override;
83 void Add(int64_t value) noexcept
override;
84 void Add(int64_t value,
const opentelemetry::context::Context &
context) noexcept
override;
87 class DoubleUpDownCounter :
public Synchronous,
public opentelemetry::metrics::UpDownCounter<double>
91 std::unique_ptr<SyncWritableMetricStorage> storage);
93 void Add(
double value,
94 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
95 void Add(
double value,
96 const opentelemetry::common::KeyValueIterable &attributes,
97 const opentelemetry::context::Context &
context) noexcept
override;
99 void Add(
double value) noexcept
override;
100 void Add(
double value,
const opentelemetry::context::Context &
context) noexcept
override;
103 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
104 class LongGauge :
public Synchronous,
public opentelemetry::metrics::Gauge<int64_t>
107 LongGauge(
const InstrumentDescriptor &instrument_descriptor,
108 std::unique_ptr<SyncWritableMetricStorage> storage);
110 void Record(int64_t value,
111 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
112 void Record(int64_t value,
113 const opentelemetry::common::KeyValueIterable &attributes,
114 const opentelemetry::context::Context &
context) noexcept
override;
116 void Record(int64_t value) noexcept
override;
117 void Record(int64_t value,
const opentelemetry::context::Context &
context) noexcept
override;
120 class DoubleGauge :
public Synchronous,
public opentelemetry::metrics::Gauge<double>
123 DoubleGauge(
const InstrumentDescriptor &instrument_descriptor,
124 std::unique_ptr<SyncWritableMetricStorage> storage);
126 void Record(
double value,
127 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
128 void Record(
double value,
129 const opentelemetry::common::KeyValueIterable &attributes,
130 const opentelemetry::context::Context &
context) noexcept
override;
132 void Record(
double value) noexcept
override;
133 void Record(
double value,
const opentelemetry::context::Context &
context) noexcept
override;
137 class LongHistogram :
public Synchronous,
public opentelemetry::metrics::Histogram<uint64_t>
140 LongHistogram(
const InstrumentDescriptor &instrument_descriptor,
141 std::unique_ptr<SyncWritableMetricStorage> storage);
143 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
144 void Record(uint64_t value,
145 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
147 void Record(uint64_t value) noexcept
override;
150 void Record(uint64_t value,
151 const opentelemetry::common::KeyValueIterable &attributes,
152 const opentelemetry::context::Context &
context) noexcept
override;
154 void Record(uint64_t value,
const opentelemetry::context::Context &
context) noexcept
override;
157 class DoubleHistogram :
public Synchronous,
public opentelemetry::metrics::Histogram<double>
161 std::unique_ptr<SyncWritableMetricStorage> storage);
163 #if OPENTELEMETRY_ABI_VERSION_NO >= 2
165 const opentelemetry::common::KeyValueIterable &attributes) noexcept
override;
167 void Record(
double value) noexcept
override;
171 const opentelemetry::common::KeyValueIterable &attributes,
172 const opentelemetry::context::Context &
context) noexcept
override;
174 void Record(
double value,
const opentelemetry::context::Context &
context) noexcept
override;