forked from open-telemetry/opentelemetry-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
encoder.go
31 lines (23 loc) · 893 Bytes
/
encoder.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package stdoutmetric // import "go.opentelemetry.io/otel/exporters/stdout/stdoutmetric"
import (
"errors"
)
// Encoder encodes and outputs OpenTelemetry metric data-types as human
// readable text.
type Encoder interface {
// Encode handles the encoding and writing of OpenTelemetry metric data.
Encode(v any) error
}
// encoderHolder is the concrete type used to wrap an Encoder so it can be
// used as a atomic.Value type.
type encoderHolder struct {
encoder Encoder
}
func (e encoderHolder) Encode(v any) error { return e.encoder.Encode(v) }
// shutdownEncoder is used when the exporter is shutdown. It always returns
// errShutdown when Encode is called.
type shutdownEncoder struct{}
var errShutdown = errors.New("exporter shutdown")
func (shutdownEncoder) Encode(any) error { return errShutdown }