]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/sdk/include/opentelemetry/sdk/metrics/sync_instruments.h
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / sdk / include / opentelemetry / sdk / metrics / sync_instruments.h
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #pragma once
5 #ifndef ENABLE_METRICS_PREVIEW
6 # include "opentelemetry/common/key_value_iterable.h"
7 # include "opentelemetry/metrics/sync_instruments.h"
8 # include "opentelemetry/nostd/string_view.h"
9 # include "opentelemetry/sdk/metrics/instruments.h"
10
11 # include "opentelemetry/sdk/instrumentationlibrary/instrumentation_library.h"
12
13 OPENTELEMETRY_BEGIN_NAMESPACE
14 namespace sdk
15 {
16 namespace metrics
17 {
18
19 // forward declaration
20 class WritableMetricStorage;
21
22 class Synchronous
23 {
24 public:
25 Synchronous(InstrumentDescriptor instrument_descriptor,
26 std::unique_ptr<WritableMetricStorage> storage)
27 : instrument_descriptor_(instrument_descriptor), storage_(std::move(storage))
28 {}
29
30 protected:
31 InstrumentDescriptor instrument_descriptor_;
32 std::unique_ptr<WritableMetricStorage> storage_;
33 };
34
35 class LongCounter : public Synchronous, public opentelemetry::metrics::Counter<long>
36 {
37 public:
38 LongCounter(InstrumentDescriptor instrument_descriptor,
39 std::unique_ptr<WritableMetricStorage> storage);
40
41 void Add(long value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override;
42 void Add(long value,
43 const opentelemetry::common::KeyValueIterable &attributes,
44 const opentelemetry::context::Context &context) noexcept override;
45
46 void Add(long value) noexcept override;
47 void Add(long value, const opentelemetry::context::Context &context) noexcept override;
48 };
49
50 class DoubleCounter : public Synchronous, public opentelemetry::metrics::Counter<double>
51 {
52
53 public:
54 DoubleCounter(InstrumentDescriptor instrument_descriptor,
55 std::unique_ptr<WritableMetricStorage> storage);
56
57 void Add(double value,
58 const opentelemetry::common::KeyValueIterable &attributes) noexcept override;
59 void Add(double value,
60 const opentelemetry::common::KeyValueIterable &attributes,
61 const opentelemetry::context::Context &context) noexcept override;
62
63 void Add(double value) noexcept override;
64 void Add(double value, const opentelemetry::context::Context &context) noexcept override;
65 };
66
67 class LongUpDownCounter : public Synchronous, public opentelemetry::metrics::UpDownCounter<long>
68 {
69 public:
70 LongUpDownCounter(InstrumentDescriptor instrument_descriptor,
71 std::unique_ptr<WritableMetricStorage> storage);
72
73 void Add(long value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override;
74 void Add(long value,
75 const opentelemetry::common::KeyValueIterable &attributes,
76 const opentelemetry::context::Context &context) noexcept override;
77
78 void Add(long value) noexcept override;
79 void Add(long value, const opentelemetry::context::Context &context) noexcept override;
80 };
81
82 class DoubleUpDownCounter : public Synchronous, public opentelemetry::metrics::UpDownCounter<double>
83 {
84 public:
85 DoubleUpDownCounter(InstrumentDescriptor instrument_descriptor,
86 std::unique_ptr<WritableMetricStorage> storage);
87
88 void Add(double value,
89 const opentelemetry::common::KeyValueIterable &attributes) noexcept override;
90 void Add(double value,
91 const opentelemetry::common::KeyValueIterable &attributes,
92 const opentelemetry::context::Context &context) noexcept override;
93
94 void Add(double value) noexcept override;
95 void Add(double value, const opentelemetry::context::Context &context) noexcept override;
96 };
97
98 class LongHistogram : public Synchronous, public opentelemetry::metrics::Histogram<long>
99 {
100 public:
101 LongHistogram(InstrumentDescriptor instrument_descriptor,
102 std::unique_ptr<WritableMetricStorage> storage);
103
104 void Record(long value,
105 const opentelemetry::common::KeyValueIterable &attributes,
106 const opentelemetry::context::Context &context) noexcept override;
107
108 void Record(long value, const opentelemetry::context::Context &context) noexcept override;
109 };
110
111 class DoubleHistogram : public Synchronous, public opentelemetry::metrics::Histogram<double>
112 {
113 public:
114 DoubleHistogram(InstrumentDescriptor instrument_descriptor,
115 std::unique_ptr<WritableMetricStorage> storage);
116
117 void Record(double value,
118 const opentelemetry::common::KeyValueIterable &attributes,
119 const opentelemetry::context::Context &context) noexcept override;
120
121 void Record(double value, const opentelemetry::context::Context &context) noexcept override;
122 };
123
124 } // namespace metrics
125 } // namespace sdk
126 OPENTELEMETRY_END_NAMESPACE
127 #endif