home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / lib / python2.4 / site-packages / BitTorrent / RateMeasure.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2006-08-31  |  1.8 KB  |  72 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. from time import time
  5.  
  6. class RateMeasure:
  7.     
  8.     def __init__(self, left):
  9.         self.start = None
  10.         self.last = None
  11.         self.rate = 0
  12.         self.remaining = None
  13.         self.left = left
  14.         self.broke = False
  15.         self.got_anything = False
  16.  
  17.     
  18.     def data_came_in(self, amount):
  19.         if not self.got_anything:
  20.             self.got_anything = True
  21.             self.start = time() - 2
  22.             self.last = self.start
  23.             self.left -= amount
  24.             return None
  25.         
  26.         self.update(time(), amount)
  27.  
  28.     
  29.     def data_rejected(self, amount):
  30.         self.left += amount
  31.  
  32.     
  33.     def get_time_left(self):
  34.         if not self.got_anything:
  35.             return None
  36.         
  37.         t = time()
  38.         if t - self.last > 15:
  39.             self.update(t, 0)
  40.         
  41.         return self.remaining
  42.  
  43.     
  44.     def get_size_left(self):
  45.         return self.left
  46.  
  47.     
  48.     def update(self, t, amount):
  49.         self.left -= amount
  50.         
  51.         try:
  52.             self.rate = (self.rate * (self.last - self.start) + amount) / (t - self.start)
  53.             self.last = t
  54.             self.remaining = self.left / self.rate
  55.             if self.start < self.last - self.remaining:
  56.                 self.start = self.last - self.remaining
  57.         except ZeroDivisionError:
  58.             self
  59.             self
  60.             self.remaining = None
  61.         except:
  62.             self
  63.  
  64.         if self.broke and self.last - self.start < 20:
  65.             self.start = self.last - 20
  66.         
  67.         if self.last - self.start > 20:
  68.             self.broke = True
  69.         
  70.  
  71.  
  72.