Source File
state.go
Belonging Package
go.opentelemetry.io/otel/api/global/internal
package internal
import (
)
type (
traceProviderHolder struct {
tp trace.Provider
}
meterProviderHolder struct {
mp metric.Provider
}
propagatorsHolder struct {
pr propagation.Propagators
}
)
var (
globalTracer = defaultTracerValue()
globalMeter = defaultMeterValue()
globalPropagators = defaultPropagatorsValue()
delegateMeterOnce sync.Once
delegateTraceOnce sync.Once
)
func () trace.Provider {
return globalTracer.Load().(traceProviderHolder).tp
}
func ( trace.Provider) {
delegateTraceOnce.Do(func() {
:= TraceProvider()
panic("invalid Provider, the global instance cannot be reinstalled")
} else if , := .(*traceProvider); {
.setDelegate()
}
})
globalTracer.Store(traceProviderHolder{tp: })
}
func () metric.Provider {
return globalMeter.Load().(meterProviderHolder).mp
}
func ( metric.Provider) {
delegateMeterOnce.Do(func() {
:= MeterProvider()
panic("invalid Provider, the global instance cannot be reinstalled")
} else if , := .(*meterProvider); {
.setDelegate()
}
})
globalMeter.Store(meterProviderHolder{mp: })
}
func () propagation.Propagators {
return globalPropagators.Load().(propagatorsHolder).pr
}
func ( propagation.Propagators) {
globalPropagators.Store(propagatorsHolder{pr: })
}
func () *atomic.Value {
:= &atomic.Value{}
.Store(traceProviderHolder{tp: &traceProvider{}})
return
}
func () *atomic.Value {
:= &atomic.Value{}
.Store(meterProviderHolder{mp: newMeterProvider()})
return
}
func () *atomic.Value {
:= &atomic.Value{}
.Store(propagatorsHolder{pr: getDefaultPropagators()})
return
}
func () propagation.Propagators {
:= trace.TraceContext{}
:= correlation.CorrelationContext{}
return propagation.New(
propagation.WithExtractors(, ),
propagation.WithInjectors(, ),
)
}
func () {
globalTracer = defaultTracerValue()
globalMeter = defaultMeterValue()
globalPropagators = defaultPropagatorsValue()
delegateMeterOnce = sync.Once{}
delegateTraceOnce = sync.Once{}
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |