bool ratelimit_test(RateLimit *r) {
usec_t ts;
- ts = now(CLOCK_MONOTONIC);
-
assert(r);
- assert(r->interval > 0);
- assert(r->burst > 0);
- if (r->begin <= 0 ||
- r->begin + r->interval < ts) {
+ if (r->interval <= 0 || r->burst <= 0)
+ return true;
- if (r->n_missed > 0)
- log_warning("%u events suppressed", r->n_missed);
+ ts = now(CLOCK_MONOTONIC);
+ if (r->begin <= 0 ||
+ r->begin + r->interval < ts) {
r->begin = ts;
- /* Reset counters */
- r->n_printed = 0;
- r->n_missed = 0;
+ /* Reset counter */
+ r->num = 0;
goto good;
}
- if (r->n_printed <= r->burst)
+ if (r->num <= r->burst)
goto good;
- r->n_missed++;
return false;
good:
- r->n_printed++;
+ r->num++;
return true;
}