(ruleName string)
| 32 | } |
| 33 | |
| 34 | func loadBoostWinner(ruleName string) (string, bool, time.Time) { |
| 35 | if v, ok := boostWinnerCache.Load(ruleName); ok { |
| 36 | entry := v.(boostWinnerEntry) |
| 37 | if time.Now().Before(entry.expires) { |
| 38 | return entry.addr, true, entry.expires |
| 39 | } |
| 40 | boostWinnerCache.Delete(ruleName) |
| 41 | } |
| 42 | return "", false, time.Time{} |
| 43 | } |
| 44 | |
| 45 | func storeBoostWinner(ruleName, addr string) { |
| 46 | // 简单的 size 控制:超过上限时随机淘汰一个(遍历首个)。 |