Codebase list golang-github-vbauerster-mpb / beec4ac
Refactor: renderedReader, barRendering Vladimir Bauer 8 years ago
2 changed file(s) with 19 addition(s) and 19 deletion(s). Raw diff Collapse all Expand all
7171 char rune
7272 till int64
7373 }
74 toRenderReader struct {
74 renderedReader struct {
7575 io.Reader
7676 toComplete bool
7777 toRemove bool
306306 }
307307 }
308308
309 func (b *Bar) render(tw int, pSyncer, aSyncer *widthSyncer) <-chan *toRenderReader {
310 ch := make(chan *toRenderReader, 1)
309 func (b *Bar) render(tw int, pSyncer, aSyncer *widthSyncer) <-chan *renderedReader {
310 ch := make(chan *renderedReader, 1)
311311
312312 go func() {
313313 select {
322322 s.completed = true
323323 r = strings.NewReader(s.panicMsg)
324324 }
325 ch <- &toRenderReader{r, s.completed, s.removed}
325 ch <- &renderedReader{r, s.completed, s.removed}
326326 }()
327327 s.draw(tw, pSyncer, aSyncer)
328328 r = io.MultiReader(s.bufP, s.bufB, s.bufA)
336336 s.draw(tw, pSyncer, aSyncer)
337337 r = io.MultiReader(s.bufP, s.bufB, s.bufA)
338338 }
339 ch <- &toRenderReader{r, s.completed, s.removed}
339 ch <- &renderedReader{r, s.completed, s.removed}
340340 }
341341 }()
342342
5555 Accumulator []chan int
5656 Distributor []chan int
5757 }
58 toRenderSnapshot struct {
59 bar *Bar
60 pipe <-chan *toRenderReader
58 barRendering struct {
59 bar *Bar
60 ready <-chan *renderedReader
6161 }
6262 )
6363
200200 close(timeout)
201201 })
202202
203 for _, trs := range s.renderByPriority(tw, pSyncer, aSyncer) {
204 r := <-trs.pipe
203 for _, br := range s.renderByPriority(tw, pSyncer, aSyncer) {
204 r := <-br.ready
205205 _, err = s.cw.ReadFrom(r)
206 if !trs.bar.completed && r.toComplete {
207 trs.bar.completed = true
208 close(trs.bar.shutdown)
206 if !br.bar.completed && r.toComplete {
207 br.bar.completed = true
208 close(br.bar.shutdown)
209209 }
210210 if r.toRemove {
211 s.heapUpdated = heap.Remove(s.bHeap, trs.bar.index) != nil
211 s.heapUpdated = heap.Remove(s.bHeap, br.bar.index) != nil
212212 }
213213 }
214214
222222 return
223223 }
224224
225 func (s *pState) renderByPriority(tw int, pSyncer, aSyncer *widthSyncer) []*toRenderSnapshot {
226 slice := make([]*toRenderSnapshot, 0, s.bHeap.Len())
225 func (s *pState) renderByPriority(tw int, pSyncer, aSyncer *widthSyncer) []*barRendering {
226 slice := make([]*barRendering, 0, s.bHeap.Len())
227227 for s.bHeap.Len() > 0 {
228228 b := heap.Pop(s.bHeap).(*Bar)
229229 defer heap.Push(s.bHeap, b)
230 slice = append(slice, &toRenderSnapshot{
231 bar: b,
232 pipe: b.render(tw, pSyncer, aSyncer),
230 slice = append(slice, &barRendering{
231 bar: b,
232 ready: b.render(tw, pSyncer, aSyncer),
233233 })
234234 }
235235 return slice