Codebase list golang-github-vbauerster-mpb / 4206f5f
WithManualRefresh same for windows Vladimir Bauer 7 years ago
4 changed file(s) with 39 addition(s) and 10 deletion(s). Raw diff Collapse all Expand all
5050 }
5151 }
5252
53 // WithManualRefresh disables internal auto refresh time.Ticker.
54 // Refresh will occur upon receive value from provided ch.
55 func WithManualRefresh(ch <-chan time.Time) ProgressOption {
56 return func(s *pState) {
57 s.manualRefreshCh = ch
58 }
59 }
60
5361 // WithCancel provide your cancel channel,
5462 // which you plan to close at some point.
5563 func WithCancel(ch <-chan struct{}) ProgressOption {
4343
4444 // following are provided by user
4545 uwg *sync.WaitGroup
46 manualRefreshCh <-chan time.Time
4647 cancel <-chan struct{}
4748 shutdownNotifier chan struct{}
4849 waitBars map[*Bar]*Bar
1010
1111 func (p *Progress) serve(s *pState) {
1212
13 var ticker *time.Ticker
14 var refreshCh <-chan time.Time
15 var winch chan os.Signal
1316 var resumeTimer *time.Timer
1417 var resumeEvent <-chan time.Time
1518 winchIdleDur := s.rr * 2
16 winch := make(chan os.Signal, 2)
17 signal.Notify(winch, syscall.SIGWINCH)
1819
19 ticker := time.NewTicker(s.rr)
20 refreshCh := ticker.C
20 if s.manualRefreshCh == nil {
21 ticker = time.NewTicker(s.rr)
22 refreshCh = ticker.C
23 winch = make(chan os.Signal, 2)
24 signal.Notify(winch, syscall.SIGWINCH)
25 } else {
26 refreshCh = s.manualRefreshCh
27 }
2128
2229 for {
2330 select {
2532 op(s)
2633 case <-refreshCh:
2734 if s.zeroWait {
28 ticker.Stop()
29 signal.Stop(winch)
35 if s.manualRefreshCh == nil {
36 signal.Stop(winch)
37 ticker.Stop()
38 }
3039 if s.shutdownNotifier != nil {
3140 close(s.shutdownNotifier)
3241 }
11
22 package mpb
33
4 import "time"
4 import (
5 "time"
6 )
57
68 func (p *Progress) serve(s *pState) {
79
8 ticker := time.NewTicker(s.rr)
9 refreshCh := ticker.C
10 var ticker *time.Ticker
11 var refreshCh <-chan time.Time
12
13 if s.manualRefreshCh == nil {
14 ticker = time.NewTicker(s.rr)
15 refreshCh = ticker.C
16 } else {
17 refreshCh = s.manualRefreshCh
18 }
1019
1120 for {
1221 select {
1423 op(s)
1524 case <-refreshCh:
1625 if s.zeroWait {
17 ticker.Stop()
26 if s.manualRefreshCh == nil {
27 ticker.Stop()
28 }
1829 if s.shutdownNotifier != nil {
1930 close(s.shutdownNotifier)
2031 }