25 lines
609 B
C
25 lines
609 B
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
#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);
|