Codebase list golang-github-vbauerster-mpb / d7df855
fix close not called Vladimir Bauer 3 years ago
1 changed file(s) with 5 addition(s) and 9 deletion(s). Raw diff Collapse all Expand all
55 )
66
77 type proxyReader struct {
8 io.Reader
8 io.ReadCloser
99 bar *Bar
1010 }
1111
1212 func (x proxyReader) Read(p []byte) (int, error) {
13 n, err := x.Reader.Read(p)
13 n, err := x.ReadCloser.Read(p)
1414 x.bar.IncrBy(n)
1515 return n, err
1616 }
2020 }
2121
2222 func (x proxyWriterTo) WriteTo(w io.Writer) (int64, error) {
23 n, err := x.Reader.(io.WriterTo).WriteTo(w)
23 n, err := x.ReadCloser.(io.WriterTo).WriteTo(w)
2424 x.bar.IncrInt64(n)
2525 return n, err
2626 }
4444
4545 func (x ewmaProxyWriterTo) WriteTo(w io.Writer) (int64, error) {
4646 start := time.Now()
47 n, err := x.Reader.(io.WriterTo).WriteTo(w)
47 n, err := x.ReadCloser.(io.WriterTo).WriteTo(w)
4848 if n > 0 {
4949 x.bar.DecoratorEwmaUpdate(time.Since(start))
5050 }
5252 }
5353
5454 func newProxyReader(r io.Reader, b *Bar, hasEwma bool) io.ReadCloser {
55 return toReadCloser(toReader(r, b, hasEwma))
56 }
57
58 func toReader(r io.Reader, b *Bar, hasEwma bool) io.Reader {
59 pr := proxyReader{r, b}
55 pr := proxyReader{toReadCloser(r), b}
6056 if hasEwma {
6157 epr := ewmaProxyReader{pr}
6258 if _, ok := r.(io.WriterTo); ok {