atomicerror.go 355 B

123456789101112131415161718192021
  1. package errorx
  2. import "sync/atomic"
  3. // AtomicError defines an atomic error.
  4. type AtomicError struct {
  5. err atomic.Value // error
  6. }
  7. // Set sets the error.
  8. func (ae *AtomicError) Set(err error) {
  9. ae.err.Store(err)
  10. }
  11. // Load returns the error.
  12. func (ae *AtomicError) Load() error {
  13. if v := ae.err.Load(); v != nil {
  14. return v.(error)
  15. }
  16. return nil
  17. }