rename token bucket
This commit is contained in:
parent
2837b689b6
commit
e68db75cee
|
@ -10,7 +10,7 @@ import play.api.mvc.WebSocket.FrameFormatter
|
||||||
import play.twirl.api.Html
|
import play.twirl.api.Html
|
||||||
import scalaz.Monoid
|
import scalaz.Monoid
|
||||||
|
|
||||||
import lila.api.{ PageData, Context, HeaderContext, BodyContext, TokenBucketGroup }
|
import lila.api.{ PageData, Context, HeaderContext, BodyContext, TokenBucket }
|
||||||
import lila.app._
|
import lila.app._
|
||||||
import lila.common.{ LilaCookie, HTTPRequest }
|
import lila.common.{ LilaCookie, HTTPRequest }
|
||||||
import lila.security.{ Permission, Granter, FingerprintedUser }
|
import lila.security.{ Permission, Granter, FingerprintedUser }
|
||||||
|
@ -59,7 +59,7 @@ private[controllers] trait LilaController
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected def SocketOptionLimited[A: FrameFormatter](consumer: TokenBucketGroup.Consumer)(f: Context => Fu[Option[(Iteratee[A, _], Enumerator[A])]]) =
|
protected def SocketOptionLimited[A: FrameFormatter](consumer: TokenBucket.Consumer)(f: Context => Fu[Option[(Iteratee[A, _], Enumerator[A])]]) =
|
||||||
LilaSocket.rateLimited[A](consumer) { req =>
|
LilaSocket.rateLimited[A](consumer) { req =>
|
||||||
reqToCtx(req) flatMap f map {
|
reqToCtx(req) flatMap f map {
|
||||||
case None => Left(NotFound(jsonError("socket resource not found")))
|
case None => Left(NotFound(jsonError("socket resource not found")))
|
||||||
|
|
|
@ -6,7 +6,7 @@ import play.api.libs.json._
|
||||||
import play.api.mvc._, Results._
|
import play.api.mvc._, Results._
|
||||||
import play.api.mvc.WebSocket.FrameFormatter
|
import play.api.mvc.WebSocket.FrameFormatter
|
||||||
|
|
||||||
import lila.api.TokenBucketGroup
|
import lila.api.TokenBucket
|
||||||
import lila.app._
|
import lila.app._
|
||||||
import lila.common.HTTPRequest
|
import lila.common.HTTPRequest
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ object LilaSocket {
|
||||||
|
|
||||||
private val logger = play.api.Logger("ratelimit")
|
private val logger = play.api.Logger("ratelimit")
|
||||||
|
|
||||||
def rateLimited[A: FrameFormatter](consumer: TokenBucketGroup.Consumer)(f: AcceptType[A]): WebSocket[A, A] =
|
def rateLimited[A: FrameFormatter](consumer: TokenBucket.Consumer)(f: AcceptType[A]): WebSocket[A, A] =
|
||||||
WebSocket[A, A] { req =>
|
WebSocket[A, A] { req =>
|
||||||
val ip = HTTPRequest lastRemoteAddress req
|
val ip = HTTPRequest lastRemoteAddress req
|
||||||
f(req).map { resultOrSocket =>
|
f(req).map { resultOrSocket =>
|
||||||
|
|
|
@ -41,7 +41,7 @@ object Lobby extends LilaController {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val socketConsumer = lila.api.TokenBucketGroup.create(
|
private val socketConsumer = lila.api.TokenBucket.create(
|
||||||
system = lila.common.PlayApp.system,
|
system = lila.common.PlayApp.system,
|
||||||
size = 10,
|
size = 10,
|
||||||
rate = 5)
|
rate = 5)
|
||||||
|
|
|
@ -38,7 +38,7 @@ private case class TokenRequest(key: Any)
|
||||||
* @param rate refill rate in tokens per second
|
* @param rate refill rate in tokens per second
|
||||||
* @param clock for mocking the current time.
|
* @param clock for mocking the current time.
|
||||||
*/
|
*/
|
||||||
private class TokenBucketGroup(size: Int, rate: Float, clock: Clock) extends Actor {
|
private class TokenBucket(size: Int, rate: Float, clock: Clock) extends Actor {
|
||||||
|
|
||||||
private val intervalMillis: Int = (1000 / rate).toInt
|
private val intervalMillis: Int = (1000 / rate).toInt
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ private class TokenBucketGroup(size: Int, rate: Float, clock: Clock) extends Act
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object TokenBucketGroup {
|
object TokenBucket {
|
||||||
|
|
||||||
private val defaultTimeout = Timeout(100, TimeUnit.MILLISECONDS)
|
private val defaultTimeout = Timeout(100, TimeUnit.MILLISECONDS)
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ object TokenBucketGroup {
|
||||||
require(size <= 1000)
|
require(size <= 1000)
|
||||||
require(rate >= 0.000001f)
|
require(rate >= 0.000001f)
|
||||||
require(rate <= 1000)
|
require(rate <= 1000)
|
||||||
new Consumer(system.actorOf(Props(new TokenBucketGroup(size, rate, clock))))
|
new Consumer(system.actorOf(Props(new TokenBucket(size, rate, clock))))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
Loading…
Reference in a new issue