Add a concept of debt to RateLimiter, save a bit of RAM.

This commit is contained in:
Adam Ierymenko 2013-08-09 16:36:58 -04:00
parent 3af55f4423
commit 6a24ac4f00
4 changed files with 58 additions and 34 deletions

View file

@ -440,10 +440,10 @@ public:
std::map<Address,RateLimiter>::iterator rl(_multicastRateLimiters.find(addr));
if (rl == _multicastRateLimiters.end()) {
RateLimiter &newrl = _multicastRateLimiters[addr];
newrl.init(ZT_MULTICAST_DEFAULT_BYTES_PER_SECOND,ZT_MULTICAST_DEFAULT_RATE_PRELOAD,ZT_MULTICAST_DEFAULT_RATE_MAX);
return newrl.gate((double)bytes);
newrl.init(ZT_MULTICAST_DEFAULT_RATE_PRELOAD);
return newrl.gate(_rlLimit,(double)bytes);
}
return rl->second.gate((double)bytes);
return rl->second.gate(_rlLimit,(double)bytes);
}
private:
@ -452,6 +452,9 @@ private:
const RuntimeEnvironment *_r;
// Rate limits for this network
RateLimiter::Limit _rlLimit;
// Tap and tap multicast memberships
EthernetTap *_tap;
std::set<MulticastGroup> _multicastGroups;