1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-07-17 01:12:45 +02:00

Replace uses unsafe with atomic with the generic atomic.Pointer (#4226)

Line numbers debug symbols aside this code will produce the exact same machine code.
It removes a non needed use of unsafe and replace it with compile time type checked
generics.
Will help keep code cleaner in case any of this ever gets refactored in the future.
This commit is contained in:
Jorropo
2023-06-20 12:14:45 +02:00
committed by GitHub
parent e3f547fedd
commit cda2d6c7b5
2 changed files with 6 additions and 8 deletions

View File

@ -18,7 +18,6 @@ import (
"log"
"os"
"sync/atomic"
"unsafe"
)
var (
@ -42,7 +41,7 @@ type ErrorHandler interface {
}
type ErrDelegator struct {
delegate unsafe.Pointer
delegate atomic.Pointer[ErrorHandler]
}
func (d *ErrDelegator) Handle(err error) {
@ -50,12 +49,12 @@ func (d *ErrDelegator) Handle(err error) {
}
func (d *ErrDelegator) getDelegate() ErrorHandler {
return *(*ErrorHandler)(atomic.LoadPointer(&d.delegate))
return *d.delegate.Load()
}
// setDelegate sets the ErrorHandler delegate.
func (d *ErrDelegator) setDelegate(eh ErrorHandler) {
atomic.StorePointer(&d.delegate, unsafe.Pointer(&eh))
d.delegate.Store(&eh)
}
func defaultErrorHandler() *ErrDelegator {