exit loop using channel

This commit is contained in:
Lorenzo Manacorda
2016-09-26 17:31:04 +02:00
parent 4d1d554544
commit 56469e3425

View File

@@ -101,18 +101,18 @@ func (br *backgroundReader) loop(walker process.Walker) {
if len(result.sockets) != 0 {
log.Info("Received results from THE loop, exiting loop")
return
br.stopc <- struct{}{}
} else {
// Schedule next walk and adjust its rate limit
walkTime := time.Since(begin)
rateLimitPeriod, restInterval = scheduleNextWalk(rateLimitPeriod, walkTime)
ticker.Stop()
ticker = time.NewTicker(rateLimitPeriod)
pWalker.tickc = ticker.C
walkc = nil // turn off until the next loop
tickc = time.After(restInterval) // turn on
}
// Schedule next walk and adjust its rate limit
walkTime := time.Since(begin)
rateLimitPeriod, restInterval = scheduleNextWalk(rateLimitPeriod, walkTime)
ticker.Stop()
ticker = time.NewTicker(rateLimitPeriod)
pWalker.tickc = ticker.C
walkc = nil // turn off until the next loop
tickc = time.After(restInterval) // turn on
case <-br.stopc:
pWalker.stop()
ticker.Stop()