()
| 82 | } |
| 83 | |
| 84 | func (p *Program) readLoop() { |
| 85 | defer close(p.readLoopDone) |
| 86 | |
| 87 | if err := p.inputScanner.StreamEvents(p.ctx, p.msgs); err != nil { |
| 88 | select { |
| 89 | case <-p.ctx.Done(): |
| 90 | return |
| 91 | case p.errs <- err: |
| 92 | } |
| 93 | } |
| 94 | } |
| 95 | |
| 96 | // waitForReadLoop waits for the cancelReader to finish its read loop. |
| 97 | func (p *Program) waitForReadLoop() { |