|
|
@@ -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
|