Codebase list golang-github-vbauerster-mpb / 769c54f
EnableTriggerComplete waits for b.done if triggering complete event Vladimir Bauer 4 years ago
1 changed file(s) with 10 addition(s) and 2 deletion(s). Raw diff Collapse all Expand all
160160 // If bar has been incremented to the total, complete event is
161161 // triggered right away.
162162 func (b *Bar) EnableTriggerComplete() {
163 select {
164 case b.operateState <- func(s *bState) {
163 triggerComplete := make(chan bool)
164 select {
165 case b.operateState <- func(s *bState) {
166 defer func() {
167 triggerComplete <- s.triggerComplete
168 }()
165169 if s.triggerComplete {
166170 return
167171 }
173177 s.triggerComplete = true
174178 }
175179 }:
180 triggerComplete := <-triggerComplete
181 if !triggerComplete {
182 <-b.done
183 }
176184 case <-b.done:
177185 }
178186 }