The
ratecheck
and
ppsratecheck
functions facilitate rate-limiting of arbitrary events.
The former enforces a minimum interval between events while the latter
enforces a maximum number of events per second.
The
ratecheck
function compares the current time to the value pointed to by
lasttime.
If the difference is equal to or greater than
mininterval,
it returns a non-zero value and updates
lasttime
to the current time.
Otherwise, it returns zero.
The
ppsratecheck
function first compares the current time
to
lasttime.
If at least a full second has passed, the value pointed to by the
curpps
argument is reset to 1 and
lasttime
is updated to the current time.
Otherwise,
curpps
is incremented and
lasttime
is left untouched.
In either case,
ppsratecheck
returns a non-zero value if and only if the updated
curpps
is less than or equal to
maxpps
or
maxpps
is negative.