mirror of https://github.com/k3s-io/k3s
26 lines
496 B
Go
26 lines
496 B
Go
|
package ioprogress
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
)
|
||
|
|
||
|
// ProgressReader is a wrapper around ReadCloser which allows for progress tracking
|
||
|
type ProgressReader struct {
|
||
|
io.ReadCloser
|
||
|
Tracker *ProgressTracker
|
||
|
}
|
||
|
|
||
|
// Read in ProgressReader is the same as io.Read
|
||
|
func (pt *ProgressReader) Read(p []byte) (int, error) {
|
||
|
// Do normal reader tasks
|
||
|
n, err := pt.ReadCloser.Read(p)
|
||
|
|
||
|
// Do the actual progress tracking
|
||
|
if pt.Tracker != nil {
|
||
|
pt.Tracker.total += int64(n)
|
||
|
pt.Tracker.update(n)
|
||
|
}
|
||
|
|
||
|
return n, err
|
||
|
}
|