2a155c53ab
This helper alone doesn't make too much sense, but it's preparatory work for #17274, and I guess it can't hurt to land it early, it does make the ratelimit code a tiny bit prettier after all.
25 lines
601 B
C
25 lines
601 B
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "time-util.h"
|
|
#include "util.h"
|
|
|
|
typedef struct RateLimit {
|
|
usec_t interval; /* Keep those two fields first so they can be initialized easily: */
|
|
unsigned burst; /* RateLimit rl = { INTERVAL, BURST }; */
|
|
unsigned num;
|
|
usec_t begin;
|
|
} RateLimit;
|
|
|
|
static inline void ratelimit_reset(RateLimit *rl) {
|
|
rl->num = rl->begin = 0;
|
|
}
|
|
|
|
static inline bool ratelimit_configured(RateLimit *rl) {
|
|
return rl->interval > 0 && rl->burst > 0;
|
|
}
|
|
|
|
bool ratelimit_below(RateLimit *r);
|