status-go/vendor/github.com/pion/interceptor/errors.go

55 lines
913 B
Go
Raw Normal View History

2024-05-15 23:15:00 +00:00
// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
// SPDX-License-Identifier: MIT
2022-03-10 09:44:48 +00:00
package interceptor
import (
"errors"
"strings"
)
func flattenErrs(errs []error) error {
errs2 := []error{}
for _, e := range errs {
if e != nil {
errs2 = append(errs2, e)
}
}
if len(errs2) == 0 {
return nil
}
return multiError(errs2)
}
2024-05-15 23:15:00 +00:00
type multiError []error //nolint
2022-03-10 09:44:48 +00:00
func (me multiError) Error() string {
var errstrings []string
for _, err := range me {
if err != nil {
errstrings = append(errstrings, err.Error())
}
}
if len(errstrings) == 0 {
return "multiError must contain multiple error but is empty"
}
return strings.Join(errstrings, "\n")
}
func (me multiError) Is(err error) bool {
for _, e := range me {
if errors.Is(e, err) {
return true
}
2024-05-15 23:15:00 +00:00
if me2, ok := e.(multiError); ok { //nolint
2022-03-10 09:44:48 +00:00
if me2.Is(err) {
return true
}
}
}
return false
}