Blame vendor/github.com/vmware/govmomi/vim25/progress/prefix.go

Packit Service 4d2de5
/*
Packit Service 4d2de5
Copyright (c) 2014 VMware, Inc. All Rights Reserved.
Packit Service 4d2de5
Packit Service 4d2de5
Licensed under the Apache License, Version 2.0 (the "License");
Packit Service 4d2de5
you may not use this file except in compliance with the License.
Packit Service 4d2de5
You may obtain a copy of the License at
Packit Service 4d2de5
Packit Service 4d2de5
    http://www.apache.org/licenses/LICENSE-2.0
Packit Service 4d2de5
Packit Service 4d2de5
Unless required by applicable law or agreed to in writing, software
Packit Service 4d2de5
distributed under the License is distributed on an "AS IS" BASIS,
Packit Service 4d2de5
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit Service 4d2de5
See the License for the specific language governing permissions and
Packit Service 4d2de5
limitations under the License.
Packit Service 4d2de5
*/
Packit Service 4d2de5
Packit Service 4d2de5
package progress
Packit Service 4d2de5
Packit Service 4d2de5
import "fmt"
Packit Service 4d2de5
Packit Service 4d2de5
type prefixedReport struct {
Packit Service 4d2de5
	Report
Packit Service 4d2de5
	prefix string
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
func (r prefixedReport) Detail() string {
Packit Service 4d2de5
	if d := r.Report.Detail(); d != "" {
Packit Service 4d2de5
		return fmt.Sprintf("%s: %s", r.prefix, d)
Packit Service 4d2de5
	}
Packit Service 4d2de5
Packit Service 4d2de5
	return r.prefix
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
func prefixLoop(upstream <-chan Report, downstream chan<- Report, prefix string) {
Packit Service 4d2de5
	defer close(downstream)
Packit Service 4d2de5
Packit Service 4d2de5
	for r := range upstream {
Packit Service 4d2de5
		downstream <- prefixedReport{
Packit Service 4d2de5
			Report: r,
Packit Service 4d2de5
			prefix: prefix,
Packit Service 4d2de5
		}
Packit Service 4d2de5
	}
Packit Service 4d2de5
}
Packit Service 4d2de5
Packit Service 4d2de5
func Prefix(s Sinker, prefix string) Sinker {
Packit Service 4d2de5
	fn := func() chan<- Report {
Packit Service 4d2de5
		upstream := make(chan Report)
Packit Service 4d2de5
		downstream := s.Sink()
Packit Service 4d2de5
		go prefixLoop(upstream, downstream, prefix)
Packit Service 4d2de5
		return upstream
Packit Service 4d2de5
	}
Packit Service 4d2de5
Packit Service 4d2de5
	return SinkFunc(fn)
Packit Service 4d2de5
}