Comment rate_limit.h
This commit is contained in:
@@ -62,8 +62,35 @@ struct RateLimit {
|
|||||||
long last_ts;
|
long last_ts;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a struct RateLimit, which can hand out @tickets per @period
|
||||||
|
* the perioid must be in the same units as the current_ts
|
||||||
|
*
|
||||||
|
* @param r RateLimit to initialize
|
||||||
|
* @param tickets number of tickets (bucket depth)
|
||||||
|
* @param period per this period
|
||||||
|
* @param current_ts the current timestamp
|
||||||
|
*/
|
||||||
void uc_ratelimit_init(struct RateLimit *r, long tickets, long period, long current_ts);
|
void uc_ratelimit_init(struct RateLimit *r, long tickets, long period, long current_ts);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset a RateLimit, filling up the tickets again.
|
||||||
|
*
|
||||||
|
* @param r RateLimit to reset
|
||||||
|
* @param current ts, if non-zero, re-sets the last_ts to the current_ts
|
||||||
|
*/
|
||||||
void uc_ratelimit_reset(struct RateLimit *r, long current_ts);
|
void uc_ratelimit_reset(struct RateLimit *r, long current_ts);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if we have 1 ticket available, and can therefore allow
|
||||||
|
* the work. Removes 1 ticket if we can, and replenishes the tickets
|
||||||
|
* based on the elapsed time since last time the function was called.
|
||||||
|
*
|
||||||
|
* @param r the RateLimit
|
||||||
|
* @param current_ts the current timestamp. Used to calculate the
|
||||||
|
* replenisment of tichets since the previous check.
|
||||||
|
* @return 1 if we can allow, 0 if we don't.
|
||||||
|
*/
|
||||||
int uc_ratelimit_allow(struct RateLimit *r, long current_ts);
|
int uc_ratelimit_allow(struct RateLimit *r, long current_ts);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user