r342 - in /debtorrent/trunk: DebTorrent/BT1/PiecePicker.py DebTorrent/CurrentRateMeasure.py DebTorrent/download_bt1.py debian/changelog
camrdale-guest at users.alioth.debian.org
camrdale-guest at users.alioth.debian.org
Wed Jan 23 03:21:02 UTC 2008
Author: camrdale-guest
Date: Wed Jan 23 03:21:02 2008
New Revision: 342
URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=342
Log:
Make the download/upload statistics persist over restarts
Modified:
debtorrent/trunk/DebTorrent/BT1/PiecePicker.py
debtorrent/trunk/DebTorrent/CurrentRateMeasure.py
debtorrent/trunk/DebTorrent/download_bt1.py
debtorrent/trunk/debian/changelog
Modified: debtorrent/trunk/DebTorrent/BT1/PiecePicker.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/PiecePicker.py?rev=342&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/PiecePicker.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/PiecePicker.py Wed Jan 23 03:21:02 2008
@@ -15,7 +15,7 @@
from DebTorrent.clock import clock
import logging
-logger = logging.getLogger('DebTorrent.BT1.Rerequester')
+logger = logging.getLogger('DebTorrent.BT1.PiecePicker')
class PiecePicker:
"""Choose pieces to download.
Modified: debtorrent/trunk/DebTorrent/CurrentRateMeasure.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/CurrentRateMeasure.py?rev=342&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/CurrentRateMeasure.py (original)
+++ debtorrent/trunk/DebTorrent/CurrentRateMeasure.py Wed Jan 23 03:21:02 2008
@@ -25,7 +25,7 @@
"""
- def __init__(self, max_rate_period, fudge = 1):
+ def __init__(self, max_rate_period, fudge = 1, saved_total = 0L):
"""Initialize the measurement.
@type max_rate_period: C{float}
@@ -34,6 +34,9 @@
@type fudge: C{int}
@param fudge: time equivalent of writing to kernel-level TCP buffer,
for rate adjustment (optional, defaults to 1)
+ @type saved_total: C{long}
+ @param saved_total: the saved amount measured from a previous run
+ (optional, defaults to 0)
"""
@@ -41,7 +44,7 @@
self.ratesince = clock() - fudge
self.last = self.ratesince
self.rate = 0.0
- self.total = 0l
+ self.total = long(saved_total)
def update_rate(self, amount):
"""Update the rate with new data.
Modified: debtorrent/trunk/DebTorrent/download_bt1.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/download_bt1.py?rev=342&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/download_bt1.py (original)
+++ debtorrent/trunk/DebTorrent/download_bt1.py Wed Jan 23 03:21:02 2008
@@ -518,6 +518,8 @@
@ivar argslistheader: the header to print before the default config
@type unpauseflag: C{threading.Event}
@ivar unpauseflag: the flag to unset to pause the download
+ @type pickled_data: C{dictionary}
+ @ivar pickled_data: the saved data from a previous run
@type downloader: L{BT1.Downloader.Downloader}
@ivar downloader: the Downloader instance
@type storagewrapper: L{BT1.StorageWrapper.StorageWrapper}
@@ -633,6 +635,7 @@
self.argslistheader = argslistheader
self.unpauseflag = Event()
self.unpauseflag.set()
+ self.pickled_data = None
self.downloader = None
self.storagewrapper = None
self.fileselector = None
@@ -892,21 +895,25 @@
if self.doneflag.isSet():
return None
+ try:
+ self.pickled_data = self.appdataobj.getTorrentData(self.infohash)
+ except:
+ logger.exception('Could not retrieve the pickled data')
+
enabled_files = None
- data = self.appdataobj.getTorrentData(self.infohash)
d = None
- if data:
+ if self.pickled_data:
try:
- d = data['resume data']['priority']
+ d = self.pickled_data['resume data']['priority']
except:
logger.exception('pickled data is corrupt')
- if not data or d is None:
+ if not self.pickled_data or d is None:
logger.info('no cached data, manually finding and hash checking old files')
- data = None
+ self.pickled_data = None
try:
enabled_files, priority = self.find_files()
if priority:
- data = {'resume data': {'priority': priority}}
+ self.pickled_data = {'resume data': {'priority': priority}}
except:
logger.exception('Error occurred when manually finding the old files')
else:
@@ -951,8 +958,8 @@
self.storage, self.storagewrapper,
self.rawserver.add_task, self.picker,
self._failed)
- if data:
- data = data.get('resume data')
+ if self.pickled_data:
+ data = self.pickled_data.get('resume data')
if data:
self.fileselector.unpickle(data)
@@ -1099,9 +1106,19 @@
for i in xrange(self.len_pieces):
if self.storagewrapper.do_I_have(i):
self.picker.complete(i)
+
+ total_up = 0L
+ total_down = 0L
+ if self.pickled_data:
+ try:
+ total_up = long(self.pickled_data['stats']['upload'])
+ total_down = long(self.pickled_data['stats']['download'])
+ logger.info('Initializing measures with previously downloaded %d, uploaded %d' % (total_down, total_up))
+ except:
+ logger.exception('Pickled stats from previous run are corrupt')
self.upmeasure = Measure(self.config['max_rate_period'],
- self.config['upload_rate_fudge'])
- self.downmeasure = Measure(self.config['max_rate_period'])
+ self.config['upload_rate_fudge'], saved_total = total_up)
+ self.downmeasure = Measure(self.config['max_rate_period'], saved_total = total_down)
if ratelimiter:
self.ratelimiter = ratelimiter
@@ -1261,6 +1278,8 @@
self.storage.close()
self.rerequest_stopped()
if self.fileselector and self.started:
+ torrentdata['stats'] = {'upload': self.upmeasure.get_total(),
+ 'download': self.downmeasure.get_total()}
if not self.failed:
self.fileselector.finish()
torrentdata['resume data'] = self.fileselector.pickle()
Modified: debtorrent/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/debian/changelog?rev=342&op=diff
==============================================================================
--- debtorrent/trunk/debian/changelog (original)
+++ debtorrent/trunk/debian/changelog Wed Jan 23 03:21:02 2008
@@ -6,8 +6,9 @@
- currently supported only by debian testing and unstable
- see http://wiki.debian.org/DebTorrent/UniquePieces for more info
* Add torrent names to the tracker display
+ * Make the download/upload statistics last over restarts
- -- Cameron Dale <camrdale at gmail.com> Tue, 22 Jan 2008 16:15:37 -0800
+ -- Cameron Dale <camrdale at gmail.com> Tue, 22 Jan 2008 19:19:35 -0800
debtorrent (0.1.5) unstable; urgency=low
More information about the Debtorrent-commits
mailing list