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  }