-
Notifications
You must be signed in to change notification settings - Fork 5
/
option.go
37 lines (30 loc) · 980 Bytes
/
option.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
32
33
34
35
36
37
package telemetry
import (
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/trace"
)
// Option is the interface that applies a configuration option.
type Option interface {
// Apply sets the Option value of a config.
Apply(config *Telemetry)
}
var _ Option = OptionFunc(nil)
// OptionFunc implements the Option interface.
type OptionFunc func(*Telemetry)
func (f OptionFunc) Apply(c *Telemetry) {
f(c)
}
// WithTracerProvider specifies a tracer provider to use for creating a tracer.
// If none is specified, the global provider is used.
func WithTracerProvider(provider trace.TracerProvider) Option {
return OptionFunc(func(cfg *Telemetry) {
cfg.TracerProvider = provider
})
}
// WithMeterProvider specifies a tracer provider to use for creating a tracer.
// If none is specified, the global provider is used.
func WithMeterProvider(provider metric.MeterProvider) Option {
return OptionFunc(func(cfg *Telemetry) {
cfg.MeterProvider = provider
})
}