From 7a2a5bf4d2e1fc838fe774ceddd3ec879c3653e8 Mon Sep 17 00:00:00 2001 From: Nonoo Date: Tue, 20 Oct 2020 17:21:45 +0200 Subject: [PATCH] Always fully deplete available entries from seqbuf --- seqbuf.go | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/seqbuf.go b/seqbuf.go index 3b5b7bf..e59943e 100644 --- a/seqbuf.go +++ b/seqbuf.go @@ -221,21 +221,27 @@ func (s *seqBuf) watcher() { var entryAvailableTimerRunning bool for { - t, err := s.getNextDataAvailableRemainingTime() - if err == nil { - if t == 0 { // Do we have an entry available right now? - e, err := s.get() - if err == nil { - if s.entryChan != nil { - s.entryChan <- e + retry := true + for retry { + t, err := s.getNextDataAvailableRemainingTime() + if err == nil { + if t == 0 { // Do we have an entry available right now? + e, err := s.get() + if err == nil { + if s.entryChan != nil { + s.entryChan <- e + } + } else { + log.Error(err) } - } else { - log.Error(err) + } else if !entryAvailableTimerRunning { + // An entry will be available later, waiting for it. + entryAvailableTimer.Reset(t) + entryAvailableTimerRunning = true } - } else if !entryAvailableTimerRunning { - // An entry will be available later, waiting for it. - entryAvailableTimer.Reset(t) - entryAvailableTimerRunning = true + retry = true + } else { + retry = false } }