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) } |