diff options
Diffstat (limited to 'vendor/codeberg.org/gruf/go-errors/once.go')
-rw-r--r-- | vendor/codeberg.org/gruf/go-errors/once.go | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/vendor/codeberg.org/gruf/go-errors/once.go b/vendor/codeberg.org/gruf/go-errors/once.go deleted file mode 100644 index ba21ed695..000000000 --- a/vendor/codeberg.org/gruf/go-errors/once.go +++ /dev/null @@ -1,45 +0,0 @@ -package errors - -import ( - "sync/atomic" - "unsafe" -) - -// OnceError is an error structure that supports safe multi-threaded -// usage and setting only once (until reset) -type OnceError struct { - err unsafe.Pointer -} - -// NewOnce returns a new OnceError instance -func NewOnce() OnceError { - return OnceError{ - err: nil, - } -} - -func (e *OnceError) Store(err error) { - // Nothing to do - if err == nil { - return - } - - // Only set if not already - atomic.CompareAndSwapPointer( - &e.err, - nil, - unsafe.Pointer(&err), - ) -} - -func (e *OnceError) Load() error { - return *(*error)(atomic.LoadPointer(&e.err)) -} - -func (e *OnceError) IsSet() bool { - return (atomic.LoadPointer(&e.err) != nil) -} - -func (e *OnceError) Reset() { - atomic.StorePointer(&e.err, nil) -} |