make sure TraverseDecorators is sync
Vladimir Bauer
4 years ago
| 144 | 144 | |
| 145 | 145 | // TraverseDecorators traverses all available decorators and calls cb func on each. |
| 146 | 146 | func (b *Bar) TraverseDecorators(cb func(decor.Decorator)) { |
| 147 | done := make(chan struct{}) | |
| 147 | 148 | select { |
| 148 | 149 | case b.operateState <- func(s *bState) { |
| 149 | 150 | for _, decorators := range [...][]decor.Decorator{ |
| 154 | 155 | cb(extractBaseDecorator(d)) |
| 155 | 156 | } |
| 156 | 157 | } |
| 157 | }: | |
| 158 | close(done) | |
| 159 | }: | |
| 160 | <-done | |
| 158 | 161 | case <-b.done: |
| 159 | 162 | } |
| 160 | 163 | } |