make sure bar is alive, before sending to channels
Vladimir Bauer
8 years ago
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | func (r *Reader) Read(p []byte) (int, error) { |
| 15 | now := time.Now() | |
| 16 | for _, ch := range r.sbChannels { | |
| 17 | ch <- now | |
| 15 | select { | |
| 16 | case <-r.bar.done: | |
| 17 | default: | |
| 18 | now := time.Now() | |
| 19 | for _, ch := range r.sbChannels { | |
| 20 | ch <- now | |
| 21 | } | |
| 18 | 22 | } |
| 19 | 23 | n, err := r.Reader.Read(p) |
| 20 | 24 | r.bar.IncrBy(n) |