Last active
December 22, 2015 17:19
Revisions
-
grazer revised this gist
Oct 4, 2013 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,7 +7,7 @@ class TokenBucket(msgPerSecond:Long, bucketSize:Long) { val current = System.currentTimeMillis val delta = current-prev prev = current tokens += delta/1000.0 * msgPerSecond if (tokens > bucketSize) tokens = bucketSize if (tokens > 0) -
grazer revised this gist
Sep 10, 2013 . 1 changed file with 12 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -16,3 +16,15 @@ class TokenBucket(msgPerSecond:Long, bucketSize:Long) { tokens -= 1 } } scala> var tb = new TokenBucket(10, 6) tb: TokenBucket = TokenBucket@5c2f4f8b scala> (1 to 10) foreach( i => tb.limit { println(i) }) 1 2 3 4 5 6 -
grazer created this gist
Sep 10, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,18 @@ class TokenBucket(msgPerSecond:Long, bucketSize:Long) { var prev = 0L var tokens = bucketSize def limit(func: => Any): Any = { val current = System.currentTimeMillis val delta = current-prev prev = current tokens += delta/1000 * msgPerSecond if (tokens > bucketSize) tokens = bucketSize if (tokens > 0) func tokens -= 1 } }