52 lines
765 B
Go
52 lines
765 B
Go
package queue
|
|
|
|
import "errors"
|
|
|
|
type permanentError struct {
|
|
err error
|
|
}
|
|
|
|
func (e permanentError) Error() string {
|
|
return e.err.Error()
|
|
}
|
|
|
|
func (e permanentError) Unwrap() error {
|
|
return e.err
|
|
}
|
|
|
|
type transientError struct {
|
|
err error
|
|
}
|
|
|
|
func (e transientError) Error() string {
|
|
return e.err.Error()
|
|
}
|
|
|
|
func (e transientError) Unwrap() error {
|
|
return e.err
|
|
}
|
|
|
|
func Permanent(err error) error {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return permanentError{err: err}
|
|
}
|
|
|
|
func Transient(err error) error {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
return transientError{err: err}
|
|
}
|
|
|
|
func IsPermanent(err error) bool {
|
|
var target permanentError
|
|
return errors.As(err, &target)
|
|
}
|
|
|
|
func IsTransient(err error) bool {
|
|
var target transientError
|
|
return errors.As(err, &target)
|
|
}
|