package main import ( "log" "regexp" "sync" "time" "git.1e99.eu/1e99/2b2t/models" ) var ( playerRegex = regexp.MustCompile(`^(.+): (\d+)$`) ) type Poller interface { PollPlayerCount() (models.PlayerCount, error) String() string } func PollLoop(stop chan bool, wg *sync.WaitGroup, queue chan models.PlayerCount, logger *log.Logger, poller Poller) { defer wg.Done() defer logger.Printf("Poll loop exited") wg.Add(1) logger.Printf("Poll loop started") var lastPoll int64 = 0 for { select { case <-stop: return default: now := time.Now().Unix() / 60 if lastPoll == now { continue } count, err := poller.PollPlayerCount() if err != nil { logger.Printf("Failed polling player count: %s", err) continue } // Convert seconds into minutes count.Time = now lastPoll = now logger.Printf("Polled player count: %+v", count) queue <- count } } }