1 # Written by Bram Cohen
2 # see LICENSE.txt for license information
4 from clock import clock
7 def __init__(self, max_rate_period, fudge = 1):
8 self.max_rate_period = max_rate_period
9 self.ratesince = clock() - fudge
10 self.last = self.ratesince
14 def update_rate(self, amount):
17 self.rate = (self.rate * (self.last - self.ratesince) +
18 amount) / (t - self.ratesince + 0.0001)
20 if self.ratesince < t - self.max_rate_period:
21 self.ratesince = t - self.max_rate_period
25 #print 'Rate: %f (%d bytes)' % (self.rate, self.total)
28 def get_rate_noupdate(self):
31 def time_until_rate(self, newrate):
32 if self.rate <= newrate:
34 t = clock() - self.ratesince
35 return ((self.rate * t) / newrate) - t