github.com/richardwilkes/toolbox@v1.121.0/xio/tee.go (about) 1 // Copyright (c) 2016-2024 by Richard A. Wilkes. All rights reserved. 2 // 3 // This Source Code Form is subject to the terms of the Mozilla Public 4 // License, version 2.0. If a copy of the MPL was not distributed with 5 // this file, You can obtain one at http://mozilla.org/MPL/2.0/. 6 // 7 // This Source Code Form is "Incompatible With Secondary Licenses", as 8 // defined by the Mozilla Public License, version 2.0. 9 10 package xio 11 12 import "io" 13 14 // TeeWriter is a writer that writes to multiple other writers. 15 type TeeWriter struct { 16 Writers []io.Writer 17 } 18 19 // Write to each of the underlying streams. 20 func (t *TeeWriter) Write(p []byte) (n int, err error) { 21 var curErr error 22 for _, w := range t.Writers { 23 if n, curErr = w.Write(p); curErr != nil { 24 err = curErr 25 } 26 } 27 return 28 }