summaryrefslogtreecommitdiff
path: root/node/Network.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/Network.cpp')
-rw-r--r--node/Network.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/node/Network.cpp b/node/Network.cpp
index 13c81344..1f762a91 100644
--- a/node/Network.cpp
+++ b/node/Network.cpp
@@ -350,7 +350,7 @@ bool Network::isAllowed(const Address &peer) const
void Network::clean()
{
- uint64_t now = Utils::now();
+ const uint64_t now = RR->node->now();
Mutex::Lock _l(_lock);
if (_destroyed)
@@ -386,6 +386,20 @@ void Network::clean()
}
}
+bool Network::updateAndCheckMulticastBalance(const MulticastGroup &mg,unsigned int bytes)
+{
+ const uint64_t now = RR->node->now();
+ Mutex::Lock _l(_lock);
+ if (!_config)
+ return false;
+ std::map< MulticastGroup,BandwidthAccount >::iterator bal(_multicastRateAccounts.find(mg));
+ if (bal == _multicastRateAccounts.end()) {
+ NetworkConfig::MulticastRate r(_config->multicastRate(mg));
+ bal = _multicastRateAccounts.insert(std::pair< MulticastGroup,BandwidthAccount >(mg,BandwidthAccount(r.preload,r.maxBalance,r.accrual,now))).first;
+ }
+ return bal->second.deduct(bytes,now);
+}
+
void Network::learnBridgeRoute(const MAC &mac,const Address &addr)
{
Mutex::Lock _l(_lock);
@@ -488,7 +502,7 @@ class _AnnounceMulticastGroupsToPeersWithActiveDirectPaths
public:
_AnnounceMulticastGroupsToPeersWithActiveDirectPaths(const RuntimeEnvironment *renv,Network *nw) :
RR(renv),
- _now(Utils::now()),
+ _now(renv->node->now()),
_network(nw),
_supernodeAddresses(renv->topology->supernodeAddresses())
{}