diff options
-rw-r--r-- | updates.go | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -42,6 +42,7 @@ func addUpdate(pid int, action uint, song *Song) { updateLock.Lock() defer updateLock.Unlock() + // write new update pup := tailUpdates[pid] if pup != nil { pup.Next = update @@ -50,6 +51,15 @@ func addUpdate(pid int, action uint, song *Song) { } tailUpdates[pid] = update + // expire old updates + const expiryTime = 1e9 * 3 * 60 // 3 minutes + pup = headUpdates[pid] + for pup != nil && pup.Timestamp < update.Timestamp - expiryTime { + pup = pup.Next + headUpdates[pid] = pup + } + + // notify listeners listener := listeners[pid] for listener != nil { listener.L <- true |