# Functions

Convert db-based objects to user-based objects.
Return a grpc stream server interceptor that does rate limiting for DME.
Grpc unary server interceptor that does rate limiting for DME.
No description provided by the author
Creates IntervalLimiter.
No description provided by the author
Create a RateLimitManager.
No description provided by the author
Convert user-based objects to db-based objects.

# Variables

No description provided by the author
equivalent to burst size.

# Structs

Struct used to supply client/caller information to Limiters.
* Composes multiple limiters into one */.
* Limits requests based on requestLimit set for the specified interval * For example, if the interval is 1 hour and requestLimit is 100, the Limit function will reject requests once the 100 requests is reached, but will reset the count when an hour has passed.
* The time/rate package limiter that uses Wait() with maxBurstSize == 1 implements the leaky bucket algorithm as a queue (to use leaky bucket as a meter, use TokenBucketLimiter) * Requests are never rejected, just queued up and then "leaked" out of the bucket at a set rate (reqsPerSecond) * Useful for throttling requests (eg.
No description provided by the author
* RateLimitManager manages all the rate limits per API for a node (DME, Controller, and MC) * limitsPerApi maps an API to a ApiEndpointLimiter struct, which will handle all of the rate limiting for the endpoint and per ip, user, and/or org * apisPerRateLimitSettingsKey maps the RateLimitSettingsKey to a list of APIs (eg.
* The time/rate package limiter that uses Allow() implements the token bucket algorithm (which is equivalent to the leaky bucket algorithm as a meter.

# Interfaces

* Limiter Interface * Structs that implement this inferface must provide a limit function that returns whether or not to allow a request to go through * Return value is an error * If the return value is non-nil, we will reject the request (ie.