extract multiwritecloser
1 file changed, 3 insertions(+), 26 deletions(-)
changed files
M internal/storage/files/writer.go → internal/storage/files/writer.go
@@ -8,6 +8,7 @@ "path/filepath" "time" "go.alanpearce.eu/website/internal/buffer" + "go.alanpearce.eu/website/internal/multibuf" "go.alanpearce.eu/website/internal/storage" "go.alanpearce.eu/x/log"@@ -79,27 +80,6 @@ return nil } -type MultiWriteCloser struct { - writers []io.WriteCloser - multiWriter io.Writer -} - -func (mw *MultiWriteCloser) Write(p []byte) (n int, err error) { - return mw.multiWriter.Write(p) -} - -func (mw *MultiWriteCloser) Close() error { - var lastErr error - for _, w := range mw.writers { - err := w.Close() - if err != nil { - lastErr = err - } - } - - return lastErr -} - func openFileWrite(filename string) (*os.File, error) { return os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644) }@@ -124,7 +104,7 @@ return brotli.NewWriterLevel(f, brotliLevel), nil } -func multiOpenFile(filename string) (*MultiWriteCloser, error) { +func multiOpenFile(filename string) (*multibuf.WriteCloser, error) { r, err := openFileWrite(filename) if err != nil { return nil, err@@ -138,10 +118,7 @@ if err != nil { return nil, err } - return &MultiWriteCloser{ - writers: []io.WriteCloser{r, gz, br}, - multiWriter: io.MultiWriter(r, gz, br), - }, nil + return multibuf.NewWriteCloser(r, gz, br), nil } func (f *Files) OpenFileAndVariants(filename string) (io.WriteCloser, error) {