all repos — homestead @ bd77f727dca007014f42269b9dd48b92df28f657

Code for my website

extract multiwritecloser

Alan Pearce
commit

bd77f727dca007014f42269b9dd48b92df28f657

parent

2277132a99c598cbc8d3ed7a6ddc30c176848206

1 file changed, 34 insertions(+), 0 deletions(-)

changed files
A internal/multibuf/writecloser.go
@@ -0,0 +1,34 @@
+package multibuf + +import ( + "io" +) + +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 lastErr +}