github.com/vmware/govmomi@v0.51.0/vim25/progress/tee.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package progress 6 7 // Tee works like Unix tee; it forwards all progress reports it receives to the 8 // specified sinks 9 func Tee(s1, s2 Sinker) Sinker { 10 fn := func() chan<- Report { 11 d1 := s1.Sink() 12 d2 := s2.Sink() 13 u := make(chan Report) 14 go tee(u, d1, d2) 15 return u 16 } 17 18 return SinkFunc(fn) 19 } 20 21 func tee(u <-chan Report, d1, d2 chan<- Report) { 22 defer close(d1) 23 defer close(d2) 24 25 for r := range u { 26 d1 <- r 27 d2 <- r 28 } 29 }