# RateLimiter

### Related Doc: package util

#### class RateLimiter extends AnyRef

Used to rate-limit calls to a work function, e.g. that writes to a db.

Note you can disable the rate limiter by setting the frequency to 0.

The math is as follows (mod some conversions between seconds and nano-seconds):

After n samples, we can computer Ri as the "immediate rate" like:

Ri = (n-1) / (timestamp(n) - timestamp(0))

which is essentially the 1/average interval.

Given a target rate, Rt ("maxFreqHz"), we can compute it like:

Rt = n / (S + (timestamp(n) - timestamp(0))

S here is how long to sleep before we invoke the next operation. Solving for S:

S = n / Rt - (timestamp(n) - timestamp(0))

Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. RateLimiter
2. AnyRef
3. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Instance Constructors

1. #### new RateLimiter(maxFreqHz: Int)

maxFreqHz

Frequency the system should strive to achieve on average. Not a guarantee

### Value Members

1. #### final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any
2. #### final def ##(): Int

Definition Classes
AnyRef → Any
3. #### final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any
4. #### final def asInstanceOf[T0]: T0

Definition Classes
Any
5. #### def clone(): AnyRef

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( ... )
6. #### final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef
7. #### def equals(arg0: Any): Boolean

Definition Classes
AnyRef → Any
8. #### def finalize(): Unit

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
9. #### final def getClass(): Class[_]

Definition Classes
AnyRef → Any

11. #### def hashCode(): Int

Definition Classes
AnyRef → Any
12. #### final def isInstanceOf[T0]: Boolean

Definition Classes
Any

14. #### val maxFreqHz: Int

Frequency the system should strive to achieve on average.

Frequency the system should strive to achieve on average. Not a guarantee

15. #### final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef
16. #### final def notify(): Unit

Definition Classes
AnyRef
17. #### final def notifyAll(): Unit

Definition Classes
AnyRef
18. #### final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef
19. #### def toString(): String

Definition Classes
AnyRef → Any
20. #### final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
21. #### final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
22. #### final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )