refactoring newTicker takes what it really needs
Vladimir Bauer
3 years ago
| 216 | 216 | <-p.shutdown |
| 217 | 217 | } |
| 218 | 218 | |
| 219 | func (p *Progress) newTicker(s *pState, isTerminal bool) chan time.Time { | |
| 219 | func (s *pState) newTicker(ctx context.Context, isTerminal bool, done chan struct{}) chan time.Time { | |
| 220 | 220 | ch := make(chan time.Time, 1) |
| 221 | 221 | go func() { |
| 222 | 222 | var autoRefresh <-chan time.Time |
| 238 | 238 | } else { |
| 239 | 239 | ch <- time.Now() |
| 240 | 240 | } |
| 241 | case <-p.ctx.Done(): | |
| 242 | close(p.done) | |
| 241 | case <-ctx.Done(): | |
| 242 | close(done) | |
| 243 | 243 | return |
| 244 | 244 | } |
| 245 | 245 | } |
| 250 | 250 | func (p *Progress) serve(s *pState, cw *cwriter.Writer) { |
| 251 | 251 | var err error |
| 252 | 252 | render := func() error { return s.render(cw) } |
| 253 | tickerC := p.newTicker(s, cw.IsTerminal()) | |
| 253 | tickerC := s.newTicker(p.ctx, cw.IsTerminal(), p.done) | |
| 254 | 254 | |
| 255 | 255 | for { |
| 256 | 256 | select { |