summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--updates.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/updates.go b/updates.go
index e0917cc..997dc4a 100644
--- a/updates.go
+++ b/updates.go
@@ -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