7994ac1d85
When I see "test", I have to think three times what the return value
means. With "below" this is immediately clear. ratelimit_below(&limit)
sounds almost like English and is imho immediately obvious.
(I also considered ratelimit_ok, but this strongly implies that being under the
limit is somehow better. Most of the times this is true, but then we use the
ratelimit to detect triple-c-a-d, and "ok" doesn't fit so well there.)
C.f. a1bcaa07
.
47 lines
1.5 KiB
C
47 lines
1.5 KiB
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
/***
|
|
This file is part of systemd.
|
|
|
|
Copyright 2010 Lennart Poettering
|
|
***/
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "time-util.h"
|
|
#include "util.h"
|
|
|
|
typedef struct RateLimit {
|
|
usec_t interval;
|
|
usec_t begin;
|
|
unsigned burst;
|
|
unsigned num;
|
|
} RateLimit;
|
|
|
|
#define RATELIMIT_DEFINE(_name, _interval, _burst) \
|
|
RateLimit _name = { \
|
|
.interval = (_interval), \
|
|
.burst = (_burst), \
|
|
.num = 0, \
|
|
.begin = 0 \
|
|
}
|
|
|
|
#define RATELIMIT_INIT(v, _interval, _burst) \
|
|
do { \
|
|
RateLimit *_r = &(v); \
|
|
_r->interval = (_interval); \
|
|
_r->burst = (_burst); \
|
|
_r->num = 0; \
|
|
_r->begin = 0; \
|
|
} while (false)
|
|
|
|
#define RATELIMIT_RESET(v) \
|
|
do { \
|
|
RateLimit *_r = &(v); \
|
|
_r->num = 0; \
|
|
_r->begin = 0; \
|
|
} while (false)
|
|
|
|
bool ratelimit_below(RateLimit *r);
|