blob: 2e47b2964c8606bd8921b442bf7453d9c6cc8370 [file] [log] [blame]
Abhay Kumar40252eb2025-10-13 13:25:53 +00001// Copyright The OpenTelemetry Authors
2// SPDX-License-Identifier: Apache-2.0
3
4// Package global provides the OpenTelemetry global API.
5package global // import "go.opentelemetry.io/otel/internal/global"
6
7import (
8 "log"
9 "sync/atomic"
10)
11
12// ErrorHandler handles irremediable events.
13type ErrorHandler interface {
14 // Handle handles any error deemed irremediable by an OpenTelemetry
15 // component.
16 Handle(error)
17}
18
19type ErrDelegator struct {
20 delegate atomic.Pointer[ErrorHandler]
21}
22
23// Compile-time check that delegator implements ErrorHandler.
24var _ ErrorHandler = (*ErrDelegator)(nil)
25
26func (d *ErrDelegator) Handle(err error) {
27 if eh := d.delegate.Load(); eh != nil {
28 (*eh).Handle(err)
29 return
30 }
31 log.Print(err)
32}
33
34// setDelegate sets the ErrorHandler delegate.
35func (d *ErrDelegator) setDelegate(eh ErrorHandler) {
36 d.delegate.Store(&eh)
37}