basic: Various cleanups for ratelimit functions
This commit is contained in:
+14
-14
@@ -8,37 +8,37 @@
|
||||
/* Modelled after Linux' lib/ratelimit.c by Dave Young
|
||||
* <hidave.darkstar@gmail.com>, which is licensed GPLv2. */
|
||||
|
||||
bool ratelimit_below(RateLimit *r) {
|
||||
bool ratelimit_below(RateLimit *rl) {
|
||||
usec_t ts;
|
||||
|
||||
assert(r);
|
||||
assert(rl);
|
||||
|
||||
if (!ratelimit_configured(r))
|
||||
if (!ratelimit_configured(rl))
|
||||
return true;
|
||||
|
||||
ts = now(CLOCK_MONOTONIC);
|
||||
|
||||
if (r->begin <= 0 ||
|
||||
usec_sub_unsigned(ts, r->begin) > r->interval) {
|
||||
r->begin = ts; /* Start a new time window */
|
||||
r->num = 1; /* Reset counter */
|
||||
if (rl->begin <= 0 ||
|
||||
usec_sub_unsigned(ts, rl->begin) > rl->interval) {
|
||||
rl->begin = ts; /* Start a new time window */
|
||||
rl->num = 1; /* Reset counter */
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_unlikely_(r->num == UINT_MAX))
|
||||
if (_unlikely_(rl->num == UINT_MAX))
|
||||
return false;
|
||||
|
||||
r->num++;
|
||||
return r->num <= r->burst;
|
||||
rl->num++;
|
||||
return rl->num <= rl->burst;
|
||||
}
|
||||
|
||||
unsigned ratelimit_num_dropped(RateLimit *r) {
|
||||
assert(r);
|
||||
unsigned ratelimit_num_dropped(const RateLimit *rl) {
|
||||
assert(rl);
|
||||
|
||||
if (r->num == UINT_MAX) /* overflow, return as special case */
|
||||
if (rl->num == UINT_MAX) /* overflow, return as special case */
|
||||
return UINT_MAX;
|
||||
|
||||
return LESS_BY(r->num, r->burst);
|
||||
return LESS_BY(rl->num, rl->burst);
|
||||
}
|
||||
|
||||
usec_t ratelimit_end(const RateLimit *rl) {
|
||||
|
||||
@@ -18,13 +18,13 @@ static inline void ratelimit_reset(RateLimit *rl) {
|
||||
rl->num = rl->begin = 0;
|
||||
}
|
||||
|
||||
static inline bool ratelimit_configured(RateLimit *rl) {
|
||||
static inline bool ratelimit_configured(const RateLimit *rl) {
|
||||
return rl->interval > 0 && rl->burst > 0;
|
||||
}
|
||||
|
||||
bool ratelimit_below(RateLimit *r);
|
||||
bool ratelimit_below(RateLimit *rl);
|
||||
|
||||
unsigned ratelimit_num_dropped(RateLimit *r);
|
||||
unsigned ratelimit_num_dropped(const RateLimit *rl);
|
||||
|
||||
usec_t ratelimit_end(const RateLimit *rl);
|
||||
usec_t ratelimit_left(const RateLimit *rl);
|
||||
|
||||
Reference in New Issue
Block a user