1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
2 #pragma once
3 
4 #include <stdbool.h>
5 
6 #include "time-util.h"
7 #include "util.h"
8 
9 typedef struct RateLimit {
10         usec_t interval; /* Keep those two fields first so they can be initialized easily: */
11         unsigned burst;  /*   RateLimit rl = { INTERVAL, BURST }; */
12         unsigned num;
13         usec_t begin;
14 } RateLimit;
15 
ratelimit_reset(RateLimit * rl)16 static inline void ratelimit_reset(RateLimit *rl) {
17         rl->num = rl->begin = 0;
18 }
19 
ratelimit_configured(RateLimit * rl)20 static inline bool ratelimit_configured(RateLimit *rl) {
21         return rl->interval > 0 && rl->burst > 0;
22 }
23 
24 bool ratelimit_below(RateLimit *r);
25