We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent f433e11 commit c764010Copy full SHA for c764010
src/token_bucket.ts
@@ -0,0 +1,36 @@
1
+class TokenBucket {
2
+ private budget: number;
3
+ constructor(allowance: number) {
4
+ this.budget = allowance;
5
+ }
6
+ deposit(tokens: number) {
7
+ this.budget += tokens;
8
9
+
10
+ consume(tokens: number): boolean {
11
+ if (tokens > this.budget) return false;
12
13
+ this.budget -= tokens;
14
+ return true;
15
16
+}
17
18
+const TOKEN_REFRESH_RATE = 0.1;
19
+const INITIAL_SIZE = 1000;
20
+const RETRY_COST = 1;
21
22
+export class RetryTokenBucket {
23
+ private bucket = new TokenBucket(INITIAL_SIZE);
24
25
+ onCommandSuccess(retry: boolean) {
26
+ this.bucket.deposit(TOKEN_REFRESH_RATE);
27
28
+ if (retry) {
29
+ this.bucket.deposit(RETRY_COST);
30
31
32
33
+ canRetry() {
34
+ return this.bucket.consume(RETRY_COST);
35
36
0 commit comments