Codebase list golang-github-vbauerster-mpb / 5ecdf6b
initialize main ticker inside serve goroutine Vladimir Bauer 7 years ago
4 changed file(s) with 25 addition(s) and 19 deletion(s). Raw diff Collapse all Expand all
4646 if d < 10*time.Millisecond {
4747 return
4848 }
49 s.ticker.Stop()
50 s.ticker = time.NewTicker(d)
5149 s.rr = d
5250 }
5351 }
3838 format string
3939 rr time.Duration
4040 cw *cwriter.Writer
41 ticker *time.Ticker
4241 pMatrix map[int][]chan int
4342 aMatrix map[int][]chan int
4443
6160 format: pformat,
6261 cw: cwriter.New(os.Stdout),
6362 rr: prr,
64 ticker: time.NewTicker(prr),
6563 waitBars: make(map[*Bar]*Bar),
6664 debugOut: ioutil.Discard,
6765 }
99 )
1010
1111 func (p *Progress) serve(s *pState) {
12
13 var resumeTimer *time.Timer
14 var resumeEvent <-chan time.Time
15 winchIdleDur := s.rr * 2
1216 winch := make(chan os.Signal, 2)
1317 signal.Notify(winch, syscall.SIGWINCH)
1418
15 var timer *time.Timer
16 var tickerResumer <-chan time.Time
17 resumeDelay := s.rr * 2
19 ticker := time.NewTicker(s.rr)
20 refreshCh := ticker.C
1821
1922 for {
2023 select {
2124 case op := <-p.operateState:
2225 op(s)
23 case <-s.ticker.C:
26 case <-refreshCh:
2427 if s.zeroWait {
25 s.ticker.Stop()
28 ticker.Stop()
2629 signal.Stop(winch)
2730 if s.shutdownNotifier != nil {
2831 close(s.shutdownNotifier)
4144 tw = s.width
4245 }
4346 s.render(tw - tw/8)
44 if timer != nil && timer.Reset(resumeDelay) {
47 if resumeTimer != nil && resumeTimer.Reset(winchIdleDur) {
4548 break
4649 }
47 s.ticker.Stop()
48 timer = time.NewTimer(resumeDelay)
49 tickerResumer = timer.C
50 case <-tickerResumer:
51 s.ticker = time.NewTicker(s.rr)
52 tickerResumer = nil
53 timer = nil
50 ticker.Stop()
51 resumeTimer = time.NewTimer(winchIdleDur)
52 resumeEvent = resumeTimer.C
53 case <-resumeEvent:
54 ticker = time.NewTicker(s.rr)
55 refreshCh = ticker.C
56 resumeEvent = nil
57 resumeTimer = nil
5458 }
5559 }
5660 }
11
22 package mpb
33
4 import "time"
5
46 func (p *Progress) serve(s *pState) {
7
8 ticker := time.NewTicker(s.rr)
9 refreshCh := ticker.C
10
511 for {
612 select {
713 case op := <-p.operateState:
814 op(s)
9 case <-s.ticker.C:
15 case <-refreshCh:
1016 if s.zeroWait {
11 s.ticker.Stop()
17 ticker.Stop()
1218 if s.shutdownNotifier != nil {
1319 close(s.shutdownNotifier)
1420 }