backend.FilterIPs should return differentiable error - whether this is a
transient or a permanent error.
I'd use github.com/pkg/errors:
var ErrTransient = errors.New("transient error")
...
func FilterIPs(...) error {
if err != nil && err.IsTemporary() {
return errors.Wrap(ErrTransient, err.Error()
}
...
}
or just wrap make the error transient:
type Transient interface {
Temporary() bool
}
func IsTemporary(err error) bool {
if tr, _ := err.(Transient); tr != nil {
return tr.Temporary()
}
return false
}
...
func FilterIPs(...) error {
if err != nil && err.IsTemporary() {
return &transientErr{err}
}
...
}
var _ = ((*transientErr)(nil)).(Transient)
type transientErr struct {
err error
}
func (tr *transientErr) Error() string { return tr.err.Error() }
func (tr *transientErr) Temporary() bool { return true }
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.