internal/multibuf/writecloser.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package multibuf
import (
"io"
"gitlab.com/tozd/go/errors"
)
type WriteCloser struct {
writers []io.WriteCloser
io.Writer
}
func NewWriteCloser(writers ...io.WriteCloser) *WriteCloser {
ws := make([]io.Writer, len(writers))
for i, w := range writers {
ws[i] = io.Writer(w)
}
return &WriteCloser{
writers: writers,
Writer: io.MultiWriter(ws...),
}
}
func (mw *WriteCloser) Close() error {
var lastErr error
for _, w := range mw.writers {
err := w.Close()
if err != nil {
lastErr = err
}
}
return errors.WithStack(lastErr)
}
|