refactoring proxyreader
Vladimir Bauer
6 years ago
| 10 | 10 | iT time.Time |
| 11 | 11 | } |
| 12 | 12 | |
| 13 | func (prox *proxyReader) Read(p []byte) (n int, err error) { | |
| 14 | n, err = prox.ReadCloser.Read(p) | |
| 13 | func (prox *proxyReader) Read(p []byte) (int, error) { | |
| 14 | n, err := prox.ReadCloser.Read(p) | |
| 15 | 15 | if n > 0 { |
| 16 | prox.bar.IncrBy(n, time.Since(prox.iT)) | |
| 16 | prox.bar.IncrBy(n) | |
| 17 | prox.bar.DecoratorEwmaUpdate(time.Since(prox.iT)) | |
| 17 | 18 | prox.iT = time.Now() |
| 18 | 19 | } |
| 19 | 20 | if err == io.EOF { |
| 20 | 21 | go prox.bar.SetTotal(0, true) |
| 21 | 22 | } |
| 22 | return | |
| 23 | return n, err | |
| 23 | 24 | } |
| 24 | 25 | |
| 25 | 26 | type proxyWriterTo struct { |
| 27 | 28 | wt io.WriterTo |
| 28 | 29 | } |
| 29 | 30 | |
| 30 | func (prox *proxyWriterTo) WriteTo(w io.Writer) (n int64, err error) { | |
| 31 | n, err = prox.wt.WriteTo(w) | |
| 31 | func (prox *proxyWriterTo) WriteTo(w io.Writer) (int64, error) { | |
| 32 | n, err := prox.wt.WriteTo(w) | |
| 32 | 33 | if n > 0 { |
| 33 | prox.bar.IncrInt64(n, time.Since(prox.iT)) | |
| 34 | prox.bar.IncrInt64(n) | |
| 35 | prox.bar.DecoratorEwmaUpdate(time.Since(prox.iT)) | |
| 34 | 36 | prox.iT = time.Now() |
| 35 | 37 | } |
| 36 | 38 | if err == io.EOF { |
| 37 | 39 | go prox.bar.SetTotal(0, true) |
| 38 | 40 | } |
| 39 | return | |
| 41 | return n, err | |
| 40 | 42 | } |