mirror of https://github.com/XTLS/Xray-core
48 lines
735 B
Go
48 lines
735 B
Go
package errors
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
type multiError []error
|
|
|
|
func (e multiError) Error() string {
|
|
var r strings.Builder
|
|
r.WriteString("multierr: ")
|
|
for _, err := range e {
|
|
r.WriteString(err.Error())
|
|
r.WriteString(" | ")
|
|
}
|
|
return r.String()
|
|
}
|
|
|
|
func Combine(maybeError ...error) error {
|
|
var errs multiError
|
|
for _, err := range maybeError {
|
|
if err != nil {
|
|
errs = append(errs, err)
|
|
}
|
|
}
|
|
if len(errs) == 0 {
|
|
return nil
|
|
}
|
|
return errs
|
|
}
|
|
|
|
func AllEqual(expected error, actual error) bool {
|
|
switch errs := actual.(type) {
|
|
case multiError:
|
|
if len(errs) == 0 {
|
|
return false
|
|
}
|
|
for _, err := range errs {
|
|
if err != expected {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
default:
|
|
return errs == expected
|
|
}
|
|
}
|