refactoring io example
Vladimir Bauer
2 years ago
| 10 | 10 | ) |
| 11 | 11 | |
| 12 | 12 | func main() { |
| 13 | var total int64 = 1024 * 1024 * 500 | |
| 14 | reader := io.LimitReader(rand.Reader, total) | |
| 13 | var total int64 = 64 * 1024 * 1024 | |
| 14 | ||
| 15 | r, w := io.Pipe() | |
| 16 | ||
| 17 | go func() { | |
| 18 | for i := 0; i < 1024; i++ { | |
| 19 | _, _ = io.Copy(w, io.LimitReader(rand.Reader, 64*1024)) | |
| 20 | time.Sleep(time.Second / 10) | |
| 21 | } | |
| 22 | w.Close() | |
| 23 | }() | |
| 15 | 24 | |
| 16 | 25 | p := mpb.New( |
| 17 | 26 | mpb.WithWidth(60), |
| 26 | 35 | mpb.AppendDecorators( |
| 27 | 36 | decor.EwmaETA(decor.ET_STYLE_GO, 30), |
| 28 | 37 | decor.Name(" ] "), |
| 29 | decor.EwmaSpeed(decor.SizeB1024(0), "% .2f", 30), | |
| 38 | decor.EwmaSpeed(decor.SizeB1024(0), "% .2f", 60), | |
| 30 | 39 | ), |
| 31 | 40 | ) |
| 32 | 41 | |
| 33 | 42 | // create proxy reader |
| 34 | proxyReader := bar.ProxyReader(reader) | |
| 43 | proxyReader := bar.ProxyReader(r) | |
| 35 | 44 | defer proxyReader.Close() |
| 36 | 45 | |
| 37 | 46 | // copy from proxyReader, ignoring errors |