cleanup 清理过期的窗口
()
| 259 | |
| 260 | // cleanup 清理过期的窗口 |
| 261 | func (l *SlidingWindowLimiter) cleanup() { |
| 262 | ticker := time.NewTicker(l.window) |
| 263 | defer ticker.Stop() |
| 264 | |
| 265 | for range ticker.C { |
| 266 | l.mu.Lock() |
| 267 | now := time.Now() |
| 268 | cutoff := now.Add(-l.window * 2) |
| 269 | |
| 270 | for key, w := range l.windows { |
| 271 | w.mu.Lock() |
| 272 | if len(w.requests) == 0 || (len(w.requests) > 0 && w.requests[len(w.requests)-1].Before(cutoff)) { |
| 273 | delete(l.windows, key) |
| 274 | } |
| 275 | w.mu.Unlock() |
| 276 | } |
| 277 | l.mu.Unlock() |
| 278 | } |
| 279 | } |
no test coverage detected