Lines Matching refs:rl
69 func (rl *ReconfigurableRateLimiter) CheckCredit(itemCost float64) bool {
70 rl.lock.Lock()
71 defer rl.lock.Unlock()
74 if rl.balance >= itemCost {
75 rl.balance -= itemCost
79 rl.updateBalance()
80 if rl.balance >= itemCost {
81 rl.balance -= itemCost
88 func (rl *ReconfigurableRateLimiter) updateBalance() {
90 currentTime := rl.timeNow()
91 elapsedTime := currentTime.Sub(rl.lastTick)
92 rl.lastTick = currentTime
94 rl.balance += elapsedTime.Seconds() * rl.creditsPerSecond
95 if rl.balance > rl.maxBalance {
96 rl.balance = rl.maxBalance
104 func (rl *ReconfigurableRateLimiter) Update(creditsPerSecond, maxBalance float64) {
105 rl.lock.Lock()
106 defer rl.lock.Unlock()
108 rl.updateBalance() // get up to date balance
109 rl.balance = rl.balance * maxBalance / rl.maxBalance
110 rl.creditsPerSecond = creditsPerSecond
111 rl.maxBalance = maxBalance