/
githubmirror
/
origin
Обзор
Документация
Войти
/
githubmirror
/
origin
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
vendor/github.com/vmware/govmomi/vim25/progress/scale.go
64 строки
1 KB
Justin Pierce
Add compat_otp package with openshift-tests-private (OTP) util implementations
11 авг 2025, 18:00
11 авг 2025, 18:00
80ac5c1
Код
Авторство
О чём код?
// © Broadcom. All Rights Reserved. // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. // SPDX-License-Identifier: Apache-2.0 package progress type scaledReport struct { Report n int i int } func (r scaledReport) Percentage() float32 { b := 100 * float32(r.i) / float32(r.n) return b + (r.Report.Percentage() / float32(r.n)) } type scaleOne struct { s Sinker n int i int } func (s scaleOne) Sink() chan<- Report { upstream := make(chan Report) downstream := s.s.Sink() go s.loop(upstream, downstream) return upstream } func (s scaleOne) loop(upstream <-chan Report, downstream chan<- Report) { defer close(downstream) for r := range upstream { downstream <- scaledReport{ Report: r, n: s.n, i: s.i, } } } type scaleMany struct { s Sinker n int i int } func Scale(s Sinker, n int) Sinker { return &scaleMany{ s: s, n: n, } } func (s *scaleMany) Sink() chan<- Report { if s.i == s.n { s.n++ } ch := scaleOne{s: s.s, n: s.n, i: s.i}.Sink() s.i++ return ch }