23 lines
523 B
Scala
23 lines
523 B
Scala
package akka.docs.routing
|
|
|
|
import akka.actor.ActorRef
|
|
|
|
//#boundedCapacitor
|
|
trait BoundedCapacitor {
|
|
def lowerBound: Int
|
|
def upperBound: Int
|
|
|
|
def capacity(delegates: Seq[ActorRef]): Int = {
|
|
val current = delegates length
|
|
var delta = _eval(delegates)
|
|
val proposed = current + delta
|
|
|
|
if (proposed < lowerBound) delta += (lowerBound - proposed)
|
|
else if (proposed > upperBound) delta -= (proposed - upperBound)
|
|
|
|
delta
|
|
}
|
|
|
|
protected def _eval(delegates: Seq[ActorRef]): Int
|
|
}
|
|
//#boundedCapacitor
|