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)16static inline void ratelimit_reset(RateLimit *rl) { 17 rl->num = rl->begin = 0; 18 } 19 ratelimit_configured(RateLimit * rl)20static inline bool ratelimit_configured(RateLimit *rl) { 21 return rl->interval > 0 && rl->burst > 0; 22 } 23 24 bool ratelimit_below(RateLimit *r); 25