refactoring refreshCh to renderReq
Vladimir Bauer
3 years ago
| 51 | 51 |
buffers [3]*bytes.Buffer
|
| 52 | 52 |
filler BarFiller
|
| 53 | 53 |
extender extenderFunc
|
| 54 | |
refreshCh chan time.Time
|
|
54 |
renderReq chan<- time.Time
|
| 55 | 55 |
waitBar *Bar // key for (*pState).queueBars
|
| 56 | 56 |
}
|
| 57 | 57 |
|
|
| 455 | 455 |
// Technically this call isn't required, but if refresh rate is set to
|
| 456 | 456 |
// one hour for example and bar completes within a few minutes p.Wait()
|
| 457 | 457 |
// will wait for one hour. This call helps to avoid unnecessary waiting.
|
| 458 | |
go b.tryEarlyRefresh(s.refreshCh)
|
|
458 |
go b.tryEarlyRefresh(s.renderReq)
|
| 459 | 459 |
} else {
|
| 460 | 460 |
b.cancel()
|
| 461 | 461 |
}
|
| 462 | 462 |
}
|
| 463 | 463 |
|
| 464 | |
func (b *Bar) tryEarlyRefresh(refreshCh chan<- time.Time) {
|
|
464 |
func (b *Bar) tryEarlyRefresh(renderReq chan<- time.Time) {
|
| 465 | 465 |
var anyOtherRunning bool
|
| 466 | 466 |
b.container.traverseBars(func(bar *Bar) bool {
|
| 467 | 467 |
anyOtherRunning = b != bar && bar.IsRunning()
|
|
| 470 | 470 |
if !anyOtherRunning {
|
| 471 | 471 |
for {
|
| 472 | 472 |
select {
|
| 473 | |
case refreshCh <- time.Now():
|
|
473 |
case renderReq <- time.Now():
|
| 474 | 474 |
case <-b.done:
|
| 475 | 475 |
return
|
| 476 | 476 |
}
|
| 35 | 35 |
ctx context.Context
|
| 36 | 36 |
hm heapManager
|
| 37 | 37 |
dropS, dropD chan struct{}
|
| 38 | |
refreshCh chan time.Time
|
|
38 |
renderReq chan time.Time
|
| 39 | 39 |
idCount int
|
| 40 | 40 |
popPriority int
|
| 41 | 41 |
|
|
| 69 | 69 |
hm: make(heapManager),
|
| 70 | 70 |
dropS: make(chan struct{}),
|
| 71 | 71 |
dropD: make(chan struct{}),
|
| 72 | |
refreshCh: make(chan time.Time),
|
|
72 |
renderReq: make(chan time.Time),
|
| 73 | 73 |
refreshRate: defaultRefreshRate,
|
| 74 | 74 |
popPriority: math.MinInt32,
|
| 75 | 75 |
queueBars: make(map[*Bar]*Bar),
|
|
| 246 | 246 |
op(s)
|
| 247 | 247 |
case fn := <-p.interceptIO:
|
| 248 | 248 |
fn(cw)
|
| 249 | |
case <-s.refreshCh:
|
|
249 |
case <-s.renderReq:
|
| 250 | 250 |
e := render()
|
| 251 | 251 |
if e != nil {
|
| 252 | 252 |
p.cancel() // cancel all bars
|
|
| 281 | 281 |
for {
|
| 282 | 282 |
select {
|
| 283 | 283 |
case t := <-ticker.C:
|
| 284 | |
s.refreshCh <- t
|
|
284 |
s.renderReq <- t
|
| 285 | 285 |
case <-s.ctx.Done():
|
| 286 | 286 |
close(done)
|
| 287 | 287 |
return
|
|
| 294 | 294 |
select {
|
| 295 | 295 |
case x := <-s.manualRC:
|
| 296 | 296 |
if t, ok := x.(time.Time); ok {
|
| 297 | |
s.refreshCh <- t
|
|
297 |
s.renderReq <- t
|
| 298 | 298 |
} else {
|
| 299 | |
s.refreshCh <- time.Now()
|
|
299 |
s.renderReq <- time.Now()
|
| 300 | 300 |
}
|
| 301 | 301 |
case <-s.ctx.Done():
|
| 302 | 302 |
close(done)
|
|
| 412 | 412 |
reqWidth: s.reqWidth,
|
| 413 | 413 |
total: total,
|
| 414 | 414 |
filler: filler,
|
| 415 | |
refreshCh: s.refreshCh,
|
|
415 |
renderReq: s.renderReq,
|
| 416 | 416 |
autoRefresh: s.autoRefresh,
|
| 417 | 417 |
}
|
| 418 | 418 |
|