diff options
Diffstat (limited to 'vendor/codeberg.org/gruf/go-errors/v2/once.go')
-rw-r--r-- | vendor/codeberg.org/gruf/go-errors/v2/once.go | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/vendor/codeberg.org/gruf/go-errors/v2/once.go b/vendor/codeberg.org/gruf/go-errors/v2/once.go deleted file mode 100644 index 83a45a61f..000000000 --- a/vendor/codeberg.org/gruf/go-errors/v2/once.go +++ /dev/null @@ -1,47 +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, - } -} - -// Store will safely set the OnceError to value, no-op if 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), - ) -} - -// Load will load the currently stored error. -func (e *OnceError) Load() error { - return *(*error)(atomic.LoadPointer(&e.err)) -} - -// IsSet returns whether OnceError has been set. -func (e *OnceError) IsSet() bool { - return (atomic.LoadPointer(&e.err) != nil) -} - -// Reset will reset the OnceError value. -func (e *OnceError) Reset() { - atomic.StorePointer(&e.err, nil) -} |