summaryrefslogtreecommitdiff
path: root/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go
diff options
context:
space:
mode:
authorLibravatar Terin Stock <terinjokes@gmail.com>2025-03-09 17:47:56 +0100
committerLibravatar Terin Stock <terinjokes@gmail.com>2025-03-10 01:59:49 +0100
commit3ac1ee16f377d31a0fb80c8dae28b6239ac4229e (patch)
treef61faa581feaaeaba2542b9f2b8234a590684413 /vendor/go.opentelemetry.io/otel/sdk/metric/reader.go
parent[chore] update URLs to forked source (diff)
downloadgotosocial-3ac1ee16f377d31a0fb80c8dae28b6239ac4229e.tar.xz
[chore] remove vendor
Diffstat (limited to 'vendor/go.opentelemetry.io/otel/sdk/metric/reader.go')
-rw-r--r--vendor/go.opentelemetry.io/otel/sdk/metric/reader.go189
1 files changed, 0 insertions, 189 deletions
diff --git a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go b/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go
deleted file mode 100644
index d13a70697..000000000
--- a/vendor/go.opentelemetry.io/otel/sdk/metric/reader.go
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package metric // import "go.opentelemetry.io/otel/sdk/metric"
-
-import (
- "context"
- "errors"
-
- "go.opentelemetry.io/otel/sdk/metric/metricdata"
-)
-
-// errDuplicateRegister is logged by a Reader when an attempt to registered it
-// more than once occurs.
-var errDuplicateRegister = errors.New("duplicate reader registration")
-
-// ErrReaderNotRegistered is returned if Collect or Shutdown are called before
-// the reader is registered with a MeterProvider.
-var ErrReaderNotRegistered = errors.New("reader is not registered")
-
-// ErrReaderShutdown is returned if Collect or Shutdown are called after a
-// reader has been Shutdown once.
-var ErrReaderShutdown = errors.New("reader is shutdown")
-
-// errNonPositiveDuration is logged when an environmental variable
-// has non-positive value.
-var errNonPositiveDuration = errors.New("non-positive duration")
-
-// Reader is the interface used between the SDK and an
-// exporter. Control flow is bi-directional through the
-// Reader, since the SDK initiates ForceFlush and Shutdown
-// while the exporter initiates collection. The Register() method here
-// informs the Reader that it can begin reading, signaling the
-// start of bi-directional control flow.
-//
-// Typically, push-based exporters that are periodic will
-// implement PeriodicExporter themselves and construct a
-// PeriodicReader to satisfy this interface.
-//
-// Pull-based exporters will typically implement Register
-// themselves, since they read on demand.
-//
-// Warning: methods may be added to this interface in minor releases.
-type Reader interface {
- // register registers a Reader with a MeterProvider.
- // The producer argument allows the Reader to signal the sdk to collect
- // and send aggregated metric measurements.
- register(sdkProducer)
-
- // temporality reports the Temporality for the instrument kind provided.
- //
- // This method needs to be concurrent safe with itself and all the other
- // Reader methods.
- temporality(InstrumentKind) metricdata.Temporality
-
- // aggregation returns what Aggregation to use for an instrument kind.
- //
- // This method needs to be concurrent safe with itself and all the other
- // Reader methods.
- aggregation(InstrumentKind) Aggregation // nolint:revive // import-shadow for method scoped by type.
-
- // Collect gathers and returns all metric data related to the Reader from
- // the SDK and stores it in rm. An error is returned if this is called
- // after Shutdown or if rm is nil.
- //
- // This method needs to be concurrent safe, and the cancellation of the
- // passed context is expected to be honored.
- Collect(ctx context.Context, rm *metricdata.ResourceMetrics) error
- // DO NOT CHANGE: any modification will not be backwards compatible and
- // must never be done outside of a new major release.
-
- // Shutdown flushes all metric measurements held in an export pipeline and releases any
- // held computational resources.
- //
- // This deadline or cancellation of the passed context are honored. An appropriate
- // error will be returned in these situations. There is no guaranteed that all
- // telemetry be flushed or all resources have been released in these
- // situations.
- //
- // After Shutdown is called, calls to Collect will perform no operation and instead will return
- // an error indicating the shutdown state.
- //
- // This method needs to be concurrent safe.
- Shutdown(context.Context) error
- // DO NOT CHANGE: any modification will not be backwards compatible and
- // must never be done outside of a new major release.
-}
-
-// sdkProducer produces metrics for a Reader.
-type sdkProducer interface {
- // produce returns aggregated metrics from a single collection.
- //
- // This method is safe to call concurrently.
- produce(context.Context, *metricdata.ResourceMetrics) error
-}
-
-// Producer produces metrics for a Reader from an external source.
-type Producer interface {
- // DO NOT CHANGE: any modification will not be backwards compatible and
- // must never be done outside of a new major release.
-
- // Produce returns aggregated metrics from an external source.
- //
- // This method should be safe to call concurrently.
- Produce(context.Context) ([]metricdata.ScopeMetrics, error)
- // DO NOT CHANGE: any modification will not be backwards compatible and
- // must never be done outside of a new major release.
-}
-
-// produceHolder is used as an atomic.Value to wrap the non-concrete producer
-// type.
-type produceHolder struct {
- produce func(context.Context, *metricdata.ResourceMetrics) error
-}
-
-// shutdownProducer produces an ErrReaderShutdown error always.
-type shutdownProducer struct{}
-
-// produce returns an ErrReaderShutdown error.
-func (p shutdownProducer) produce(context.Context, *metricdata.ResourceMetrics) error {
- return ErrReaderShutdown
-}
-
-// TemporalitySelector selects the temporality to use based on the InstrumentKind.
-type TemporalitySelector func(InstrumentKind) metricdata.Temporality
-
-// DefaultTemporalitySelector is the default TemporalitySelector used if
-// WithTemporalitySelector is not provided. CumulativeTemporality will be used
-// for all instrument kinds if this TemporalitySelector is used.
-func DefaultTemporalitySelector(InstrumentKind) metricdata.Temporality {
- return metricdata.CumulativeTemporality
-}
-
-// AggregationSelector selects the aggregation and the parameters to use for
-// that aggregation based on the InstrumentKind.
-//
-// If the Aggregation returned is nil or DefaultAggregation, the selection from
-// DefaultAggregationSelector will be used.
-type AggregationSelector func(InstrumentKind) Aggregation
-
-// DefaultAggregationSelector returns the default aggregation and parameters
-// that will be used to summarize measurement made from an instrument of
-// InstrumentKind. This AggregationSelector using the following selection
-// mapping: Counter ⇨ Sum, Observable Counter ⇨ Sum, UpDownCounter ⇨ Sum,
-// Observable UpDownCounter ⇨ Sum, Observable Gauge ⇨ LastValue,
-// Histogram ⇨ ExplicitBucketHistogram.
-func DefaultAggregationSelector(ik InstrumentKind) Aggregation {
- switch ik {
- case InstrumentKindCounter, InstrumentKindUpDownCounter, InstrumentKindObservableCounter, InstrumentKindObservableUpDownCounter:
- return AggregationSum{}
- case InstrumentKindObservableGauge, InstrumentKindGauge:
- return AggregationLastValue{}
- case InstrumentKindHistogram:
- return AggregationExplicitBucketHistogram{
- Boundaries: []float64{0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000},
- NoMinMax: false,
- }
- }
- panic("unknown instrument kind")
-}
-
-// ReaderOption is an option which can be applied to manual or Periodic
-// readers.
-type ReaderOption interface {
- PeriodicReaderOption
- ManualReaderOption
-}
-
-// WithProducer registers producers as an external Producer of metric data
-// for this Reader.
-func WithProducer(p Producer) ReaderOption {
- return producerOption{p: p}
-}
-
-type producerOption struct {
- p Producer
-}
-
-// applyManual returns a manualReaderConfig with option applied.
-func (o producerOption) applyManual(c manualReaderConfig) manualReaderConfig {
- c.producers = append(c.producers, o.p)
- return c
-}
-
-// applyPeriodic returns a periodicReaderConfig with option applied.
-func (o producerOption) applyPeriodic(c periodicReaderConfig) periodicReaderConfig {
- c.producers = append(c.producers, o.p)
- return c
-}