| 120 | } |
| 121 | |
| 122 | func (s *Scanner) launchScanLoop(rt *scanLoopRuntime) { |
| 123 | s.wg.Add(1) |
| 124 | go func() { |
| 125 | defer s.wg.Done() |
| 126 | s.lg.Info("Launching scanner loop", "mode", rt.mode, "interval", rt.interval, "batchSize", rt.batchSize) |
| 127 | mainTicker := time.NewTicker(rt.interval) |
| 128 | defer mainTicker.Stop() |
| 129 | |
| 130 | s.doScan(rt) |
| 131 | for { |
| 132 | select { |
| 133 | case <-mainTicker.C: |
| 134 | s.doScan(rt) |
| 135 | |
| 136 | case <-s.ctx.Done(): |
| 137 | return |
| 138 | } |
| 139 | } |
| 140 | }() |
| 141 | } |
| 142 | |
| 143 | func (s *Scanner) doScan(state *scanLoopRuntime) { |
| 144 | if !s.acquireScanPermit() { |