syncint64.go

  1// Copyright The OpenTelemetry Authors
  2// SPDX-License-Identifier: Apache-2.0
  3
  4package metric // import "go.opentelemetry.io/otel/metric"
  5
  6import (
  7	"context"
  8
  9	"go.opentelemetry.io/otel/metric/embedded"
 10)
 11
 12// Int64Counter is an instrument that records increasing int64 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.
 17type Int64Counter 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.Int64Counter
 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 int64, options ...AddOption)
 28}
 29
 30// Int64CounterConfig contains options for synchronous counter instruments that
 31// record int64 values.
 32type Int64CounterConfig struct {
 33	description string
 34	unit        string
 35}
 36
 37// NewInt64CounterConfig returns a new [Int64CounterConfig] with all opts
 38// applied.
 39func NewInt64CounterConfig(opts ...Int64CounterOption) Int64CounterConfig {
 40	var config Int64CounterConfig
 41	for _, o := range opts {
 42		config = o.applyInt64Counter(config)
 43	}
 44	return config
 45}
 46
 47// Description returns the configured description.
 48func (c Int64CounterConfig) Description() string {
 49	return c.description
 50}
 51
 52// Unit returns the configured unit.
 53func (c Int64CounterConfig) Unit() string {
 54	return c.unit
 55}
 56
 57// Int64CounterOption applies options to a [Int64CounterConfig]. See
 58// [InstrumentOption] for other options that can be used as an
 59// Int64CounterOption.
 60type Int64CounterOption interface {
 61	applyInt64Counter(Int64CounterConfig) Int64CounterConfig
 62}
 63
 64// Int64UpDownCounter is an instrument that records increasing or decreasing
 65// int64 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.
 70type Int64UpDownCounter 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.Int64UpDownCounter
 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 int64, options ...AddOption)
 81}
 82
 83// Int64UpDownCounterConfig contains options for synchronous counter
 84// instruments that record int64 values.
 85type Int64UpDownCounterConfig struct {
 86	description string
 87	unit        string
 88}
 89
 90// NewInt64UpDownCounterConfig returns a new [Int64UpDownCounterConfig] with
 91// all opts applied.
 92func NewInt64UpDownCounterConfig(opts ...Int64UpDownCounterOption) Int64UpDownCounterConfig {
 93	var config Int64UpDownCounterConfig
 94	for _, o := range opts {
 95		config = o.applyInt64UpDownCounter(config)
 96	}
 97	return config
 98}
 99
100// Description returns the configured description.
101func (c Int64UpDownCounterConfig) Description() string {
102	return c.description
103}
104
105// Unit returns the configured unit.
106func (c Int64UpDownCounterConfig) Unit() string {
107	return c.unit
108}
109
110// Int64UpDownCounterOption applies options to a [Int64UpDownCounterConfig].
111// See [InstrumentOption] for other options that can be used as an
112// Int64UpDownCounterOption.
113type Int64UpDownCounterOption interface {
114	applyInt64UpDownCounter(Int64UpDownCounterConfig) Int64UpDownCounterConfig
115}
116
117// Int64Histogram is an instrument that records a distribution of int64
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.
123type Int64Histogram 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.Int64Histogram
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 int64, options ...RecordOption)
134}
135
136// Int64HistogramConfig contains options for synchronous histogram instruments
137// that record int64 values.
138type Int64HistogramConfig struct {
139	description              string
140	unit                     string
141	explicitBucketBoundaries []float64
142}
143
144// NewInt64HistogramConfig returns a new [Int64HistogramConfig] with all opts
145// applied.
146func NewInt64HistogramConfig(opts ...Int64HistogramOption) Int64HistogramConfig {
147	var config Int64HistogramConfig
148	for _, o := range opts {
149		config = o.applyInt64Histogram(config)
150	}
151	return config
152}
153
154// Description returns the configured description.
155func (c Int64HistogramConfig) Description() string {
156	return c.description
157}
158
159// Unit returns the configured unit.
160func (c Int64HistogramConfig) Unit() string {
161	return c.unit
162}
163
164// ExplicitBucketBoundaries returns the configured explicit bucket boundaries.
165func (c Int64HistogramConfig) ExplicitBucketBoundaries() []float64 {
166	return c.explicitBucketBoundaries
167}
168
169// Int64HistogramOption applies options to a [Int64HistogramConfig]. See
170// [InstrumentOption] for other options that can be used as an
171// Int64HistogramOption.
172type Int64HistogramOption interface {
173	applyInt64Histogram(Int64HistogramConfig) Int64HistogramConfig
174}
175
176// Int64Gauge is an instrument that records instantaneous int64 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.
181type Int64Gauge 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.Int64Gauge
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 int64, options ...RecordOption)
192}
193
194// Int64GaugeConfig contains options for synchronous gauge instruments that
195// record int64 values.
196type Int64GaugeConfig struct {
197	description string
198	unit        string
199}
200
201// NewInt64GaugeConfig returns a new [Int64GaugeConfig] with all opts
202// applied.
203func NewInt64GaugeConfig(opts ...Int64GaugeOption) Int64GaugeConfig {
204	var config Int64GaugeConfig
205	for _, o := range opts {
206		config = o.applyInt64Gauge(config)
207	}
208	return config
209}
210
211// Description returns the configured description.
212func (c Int64GaugeConfig) Description() string {
213	return c.description
214}
215
216// Unit returns the configured unit.
217func (c Int64GaugeConfig) Unit() string {
218	return c.unit
219}
220
221// Int64GaugeOption applies options to a [Int64GaugeConfig]. See
222// [InstrumentOption] for other options that can be used as a
223// Int64GaugeOption.
224type Int64GaugeOption interface {
225	applyInt64Gauge(Int64GaugeConfig) Int64GaugeConfig
226}