Files
kopia/object/writeback.go
2017-10-14 16:38:22 -07:00

38 lines
548 B
Go

package object
import (
"fmt"
"strings"
"sync"
)
type asyncErrors struct {
sync.RWMutex
errors []error
}
func (e *asyncErrors) add(err error) {
e.Lock()
e.errors = append(e.errors, err)
e.Unlock()
}
func (e *asyncErrors) check() error {
e.RLock()
defer e.RUnlock()
switch len(e.errors) {
case 0:
return nil
case 1:
return e.errors[0]
default:
msg := make([]string, len(e.errors))
for i, err := range e.errors {
msg[i] = err.Error()
}
return fmt.Errorf("%v errors: %v", len(e.errors), strings.Join(msg, ";"))
}
}