diff options
Diffstat (limited to 'pyload/network/Bucket.py')
-rw-r--r-- | pyload/network/Bucket.py | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/pyload/network/Bucket.py b/pyload/network/Bucket.py deleted file mode 100644 index 408a1e240..000000000 --- a/pyload/network/Bucket.py +++ /dev/null @@ -1,52 +0,0 @@ -# -*- coding: utf-8 -*- -# @author: RaNaN - -from time import time -from threading import Lock - -MIN_RATE = 10240 #: 10kb minimum rate - - -class Bucket(object): - - def __init__(self): - self.rate = 0 # bytes per second, maximum targeted throughput - self.tokens = 0 - self.timestamp = time() - self.lock = Lock() - - - def __nonzero__(self): - return False if self.rate < MIN_RATE else True - - - def setRate(self, rate): - self.lock.acquire() - self.rate = int(rate) - self.lock.release() - - - def consumed(self, amount): - """ return the time the process has to sleep, after it consumed a specified amount """ - if self.rate < MIN_RATE: - return 0 #: May become unresponsive otherwise - - self.lock.acquire() - self.calc_tokens() - self.tokens -= amount - - if self.tokens < 0: - time = -self.tokens/float(self.rate) - else: - time = 0 - - self.lock.release() - return time - - - def calc_tokens(self): - if self.tokens < self.rate: - now = time() - delta = self.rate * (now - self.timestamp) - self.tokens = min(self.rate, self.tokens + delta) - self.timestamp = now |