1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3 4 package metric // import "go.opentelemetry.io/otel/metric"
5 6 import (
7 "context"
8 9 "go.opentelemetry.io/otel/metric/embedded"
10 )
11 12 // Float64Counter is an instrument that records increasing float64 values.
13 //
14 // Warning: Methods may be added to this interface in minor releases. See
15 // package documentation on API implementation for information on how to set
16 // default behavior for unimplemented methods.
17 type Float64Counter interface {
18 // Users of the interface can ignore this. This embedded type is only used
19 // by implementations of this interface. See the "API Implementations"
20 // section of the package documentation for more information.
21 embedded.Float64Counter
22 23 // Add records a change to the counter.
24 //
25 // Use the WithAttributeSet (or, if performance is not a concern,
26 // the WithAttributes) option to include measurement attributes.
27 Add(ctx context.Context, incr float64, options ...AddOption)
28 }
29 30 // Float64CounterConfig contains options for synchronous counter instruments that
31 // record float64 values.
32 type Float64CounterConfig struct {
33 description string
34 unit string
35 }
36 37 // NewFloat64CounterConfig returns a new [Float64CounterConfig] with all opts
38 // applied.
39 func NewFloat64CounterConfig(opts ...Float64CounterOption) Float64CounterConfig {
40 var config Float64CounterConfig
41 for _, o := range opts {
42 config = o.applyFloat64Counter(config)
43 }
44 return config
45 }
46 47 // Description returns the configured description.
48 func (c Float64CounterConfig) Description() string {
49 return c.description
50 }
51 52 // Unit returns the configured unit.
53 func (c Float64CounterConfig) Unit() string {
54 return c.unit
55 }
56 57 // Float64CounterOption applies options to a [Float64CounterConfig]. See
58 // [InstrumentOption] for other options that can be used as a
59 // Float64CounterOption.
60 type Float64CounterOption interface {
61 applyFloat64Counter(Float64CounterConfig) Float64CounterConfig
62 }
63 64 // Float64UpDownCounter is an instrument that records increasing or decreasing
65 // float64 values.
66 //
67 // Warning: Methods may be added to this interface in minor releases. See
68 // package documentation on API implementation for information on how to set
69 // default behavior for unimplemented methods.
70 type Float64UpDownCounter interface {
71 // Users of the interface can ignore this. This embedded type is only used
72 // by implementations of this interface. See the "API Implementations"
73 // section of the package documentation for more information.
74 embedded.Float64UpDownCounter
75 76 // Add records a change to the counter.
77 //
78 // Use the WithAttributeSet (or, if performance is not a concern,
79 // the WithAttributes) option to include measurement attributes.
80 Add(ctx context.Context, incr float64, options ...AddOption)
81 }
82 83 // Float64UpDownCounterConfig contains options for synchronous counter
84 // instruments that record float64 values.
85 type Float64UpDownCounterConfig struct {
86 description string
87 unit string
88 }
89 90 // NewFloat64UpDownCounterConfig returns a new [Float64UpDownCounterConfig]
91 // with all opts applied.
92 func NewFloat64UpDownCounterConfig(opts ...Float64UpDownCounterOption) Float64UpDownCounterConfig {
93 var config Float64UpDownCounterConfig
94 for _, o := range opts {
95 config = o.applyFloat64UpDownCounter(config)
96 }
97 return config
98 }
99 100 // Description returns the configured description.
101 func (c Float64UpDownCounterConfig) Description() string {
102 return c.description
103 }
104 105 // Unit returns the configured unit.
106 func (c Float64UpDownCounterConfig) Unit() string {
107 return c.unit
108 }
109 110 // Float64UpDownCounterOption applies options to a
111 // [Float64UpDownCounterConfig]. See [InstrumentOption] for other options that
112 // can be used as a Float64UpDownCounterOption.
113 type Float64UpDownCounterOption interface {
114 applyFloat64UpDownCounter(Float64UpDownCounterConfig) Float64UpDownCounterConfig
115 }
116 117 // Float64Histogram is an instrument that records a distribution of float64
118 // values.
119 //
120 // Warning: Methods may be added to this interface in minor releases. See
121 // package documentation on API implementation for information on how to set
122 // default behavior for unimplemented methods.
123 type Float64Histogram interface {
124 // Users of the interface can ignore this. This embedded type is only used
125 // by implementations of this interface. See the "API Implementations"
126 // section of the package documentation for more information.
127 embedded.Float64Histogram
128 129 // Record adds an additional value to the distribution.
130 //
131 // Use the WithAttributeSet (or, if performance is not a concern,
132 // the WithAttributes) option to include measurement attributes.
133 Record(ctx context.Context, incr float64, options ...RecordOption)
134 }
135 136 // Float64HistogramConfig contains options for synchronous histogram
137 // instruments that record float64 values.
138 type Float64HistogramConfig struct {
139 description string
140 unit string
141 explicitBucketBoundaries []float64
142 }
143 144 // NewFloat64HistogramConfig returns a new [Float64HistogramConfig] with all
145 // opts applied.
146 func NewFloat64HistogramConfig(opts ...Float64HistogramOption) Float64HistogramConfig {
147 var config Float64HistogramConfig
148 for _, o := range opts {
149 config = o.applyFloat64Histogram(config)
150 }
151 return config
152 }
153 154 // Description returns the configured description.
155 func (c Float64HistogramConfig) Description() string {
156 return c.description
157 }
158 159 // Unit returns the configured unit.
160 func (c Float64HistogramConfig) Unit() string {
161 return c.unit
162 }
163 164 // ExplicitBucketBoundaries returns the configured explicit bucket boundaries.
165 func (c Float64HistogramConfig) ExplicitBucketBoundaries() []float64 {
166 return c.explicitBucketBoundaries
167 }
168 169 // Float64HistogramOption applies options to a [Float64HistogramConfig]. See
170 // [InstrumentOption] for other options that can be used as a
171 // Float64HistogramOption.
172 type Float64HistogramOption interface {
173 applyFloat64Histogram(Float64HistogramConfig) Float64HistogramConfig
174 }
175 176 // Float64Gauge is an instrument that records instantaneous float64 values.
177 //
178 // Warning: Methods may be added to this interface in minor releases. See
179 // package documentation on API implementation for information on how to set
180 // default behavior for unimplemented methods.
181 type Float64Gauge interface {
182 // Users of the interface can ignore this. This embedded type is only used
183 // by implementations of this interface. See the "API Implementations"
184 // section of the package documentation for more information.
185 embedded.Float64Gauge
186 187 // Record records the instantaneous value.
188 //
189 // Use the WithAttributeSet (or, if performance is not a concern,
190 // the WithAttributes) option to include measurement attributes.
191 Record(ctx context.Context, value float64, options ...RecordOption)
192 }
193 194 // Float64GaugeConfig contains options for synchronous gauge instruments that
195 // record float64 values.
196 type Float64GaugeConfig struct {
197 description string
198 unit string
199 }
200 201 // NewFloat64GaugeConfig returns a new [Float64GaugeConfig] with all opts
202 // applied.
203 func NewFloat64GaugeConfig(opts ...Float64GaugeOption) Float64GaugeConfig {
204 var config Float64GaugeConfig
205 for _, o := range opts {
206 config = o.applyFloat64Gauge(config)
207 }
208 return config
209 }
210 211 // Description returns the configured description.
212 func (c Float64GaugeConfig) Description() string {
213 return c.description
214 }
215 216 // Unit returns the configured unit.
217 func (c Float64GaugeConfig) Unit() string {
218 return c.unit
219 }
220 221 // Float64GaugeOption applies options to a [Float64GaugeConfig]. See
222 // [InstrumentOption] for other options that can be used as a
223 // Float64GaugeOption.
224 type Float64GaugeOption interface {
225 applyFloat64Gauge(Float64GaugeConfig) Float64GaugeConfig
226 }
227