Small optimization change when tickets < period
This commit is contained in:
+10
-2
@@ -4,7 +4,13 @@
|
|||||||
void uc_ratelimit_init(struct RateLimit *r, long tickets, long period, long current_ts)
|
void uc_ratelimit_init(struct RateLimit *r, long tickets, long period, long current_ts)
|
||||||
{
|
{
|
||||||
r->tickets = tickets;
|
r->tickets = tickets;
|
||||||
|
|
||||||
|
if (tickets > period) {
|
||||||
r->ticket_cost = tickets * period;
|
r->ticket_cost = tickets * period;
|
||||||
|
} else {
|
||||||
|
r->ticket_cost = period;
|
||||||
|
}
|
||||||
|
|
||||||
r->period = period;
|
r->period = period;
|
||||||
r->funds = r->ticket_cost * tickets;
|
r->funds = r->ticket_cost * tickets;
|
||||||
r->last_ts = current_ts;
|
r->last_ts = current_ts;
|
||||||
@@ -19,8 +25,9 @@ void uc_ratelimit_reset(struct RateLimit *r, long current_ts)
|
|||||||
{
|
{
|
||||||
r->funds = r->ticket_cost * r->tickets;
|
r->funds = r->ticket_cost * r->tickets;
|
||||||
|
|
||||||
if (current_ts)
|
if (current_ts) {
|
||||||
r->last_ts = current_ts;
|
r->last_ts = current_ts;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int uc_ratelimit_allow(struct RateLimit *r, long current_ts)
|
int uc_ratelimit_allow(struct RateLimit *r, long current_ts)
|
||||||
@@ -45,8 +52,9 @@ int uc_ratelimit_allow(struct RateLimit *r, long current_ts)
|
|||||||
((r->tickets * r->ticket_cost) / r->period);
|
((r->tickets * r->ticket_cost) / r->period);
|
||||||
|
|
||||||
//throttle handing out tickets
|
//throttle handing out tickets
|
||||||
if (r->funds > r->ticket_cost * r->tickets)
|
if (r->funds > r->ticket_cost * r->tickets) {
|
||||||
r->funds = r->ticket_cost * r->tickets;
|
r->funds = r->ticket_cost * r->tickets;
|
||||||
|
}
|
||||||
|
|
||||||
//If we have enough to buy atleast one ticket, we can allow
|
//If we have enough to buy atleast one ticket, we can allow
|
||||||
if (r->funds >= r->ticket_cost) {
|
if (r->funds >= r->ticket_cost) {
|
||||||
|
|||||||
Reference in New Issue
Block a user