Skip to content

Commit e2e47ce

Browse files
committed
Revert SuspendingRatelimit changes
This ratelimit class is not needed anymore with the new vanilla ratelimit implementation
1 parent b1acc04 commit e2e47ce

File tree

2 files changed

+30
-34
lines changed

2 files changed

+30
-34
lines changed

latte/src/main/java/gg/beemo/latte/util/Ratelimit.kt renamed to latte/src/main/java/gg/beemo/latte/util/SuspendingRatelimit.kt

+26-30
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,15 @@ import kotlinx.coroutines.sync.Semaphore
55
import kotlinx.coroutines.sync.withPermit
66
import kotlin.time.Duration
77

8-
class Ratelimit(val burst: Int, val duration: Duration) {
8+
class SuspendingRatelimit(private val burst: Int, private val duration: Duration) {
99
@Volatile
1010
private var remainingQuota: Int = burst
11-
val remaining: Int get() = remainingQuota
1211

1312
@Volatile
1413
private var resetTimestamp: Long = 0
15-
val resetAt: Long get() = resetTimestamp
1614

1715
private val quotaRequestSem = Semaphore(1)
1816

19-
suspend fun requestQuota() {
20-
quotaRequestSem.withPermit {
21-
if (remainingQuota <= 0) {
22-
tryResetQuota()
23-
val waitTime = calculateWaitTime()
24-
delay(waitTime)
25-
}
26-
tryResetQuota()
27-
check(remainingQuota > 0)
28-
remainingQuota--
29-
}
30-
}
31-
32-
fun tryRequestQuota(): Pair<Boolean, Long> {
33-
tryResetQuota()
34-
if (remainingQuota <= 0) {
35-
return false to calculateWaitTime()
36-
}
37-
check(remainingQuota > 0)
38-
remainingQuota--
39-
return true to calculateWaitTime()
40-
}
41-
42-
fun addQuota(amount: Int) {
43-
remainingQuota += amount
44-
}
45-
4617
fun overrideRatelimit(
4718
remainingQuota: Int,
4819
resetTimestamp: Long,
@@ -61,4 +32,29 @@ class Ratelimit(val burst: Int, val duration: Duration) {
6132
resetTimestamp = System.currentTimeMillis() + duration.inWholeMilliseconds
6233
}
6334
}
35+
36+
suspend fun requestQuota() {
37+
quotaRequestSem.withPermit {
38+
if (remainingQuota <= 0) {
39+
val waitTime = calculateWaitTime()
40+
delay(waitTime)
41+
}
42+
tryResetQuota()
43+
44+
check(remainingQuota > 0)
45+
remainingQuota--
46+
}
47+
}
48+
49+
fun tryRequestQuota(): Pair<Boolean, Long?> {
50+
if (remainingQuota <= 0) {
51+
val waitTime = calculateWaitTime()
52+
return false to waitTime
53+
}
54+
tryResetQuota()
55+
56+
check(remainingQuota > 0)
57+
remainingQuota--
58+
return true to null
59+
}
6460
}

vanilla/src/main/java/gg/beemo/vanilla/BrokerRpcRatelimitClient.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import gg.beemo.latte.broker.IgnoreRpcRequest
66
import gg.beemo.latte.broker.rpc.RpcStatus
77
import gg.beemo.latte.logging.Log
88
import gg.beemo.latte.ratelimit.SharedRatelimitData
9-
import gg.beemo.latte.util.Ratelimit
9+
import gg.beemo.latte.util.SuspendingRatelimit
1010
import java.util.concurrent.ConcurrentHashMap
1111
import kotlin.time.Duration
1212
import kotlin.time.Duration.Companion.seconds
@@ -56,10 +56,10 @@ class BrokerRpcRatelimitClient(connection: BrokerConnection) : BrokerClient(conn
5656

5757
private class KafkaRatelimitProvider(private val burst: Int, private val duration: Duration) {
5858

59-
private val limiters = ConcurrentHashMap<String, Ratelimit>()
59+
private val limiters = ConcurrentHashMap<String, SuspendingRatelimit>()
6060

61-
fun getClientRatelimit(clientId: String): Ratelimit = limiters.computeIfAbsent(clientId) {
62-
Ratelimit(burst, duration)
61+
fun getClientRatelimit(clientId: String): SuspendingRatelimit = limiters.computeIfAbsent(clientId) {
62+
SuspendingRatelimit(burst, duration)
6363
}
6464

6565
}

0 commit comments

Comments
 (0)