[Debtorrent-commits] r15 - in /debtorrent/trunk/DebTorrent/BT1:
Downloader.py Statistics.py StorageWrapper.py
camrdale-guest at users.alioth.debian.org
camrdale-guest at users.alioth.debian.org
Thu Apr 26 20:37:54 UTC 2007
Author: camrdale-guest
Date: Thu Apr 26 20:37:54 2007
New Revision: 15
URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=15
Log:
Modify Downloader and Statistics for var-size pieces
Modified:
debtorrent/trunk/DebTorrent/BT1/Downloader.py
debtorrent/trunk/DebTorrent/BT1/Statistics.py
debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py
Modified: debtorrent/trunk/DebTorrent/BT1/Downloader.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Downloader.py?rev=15&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Downloader.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Downloader.py Thu Apr 26 20:37:54 2007
@@ -260,12 +260,8 @@
self.downloader.chunk_requested(length)
def got_have(self, index):
- if index == self.downloader.numpieces-1:
- self.downloader.totalmeasure.update_rate(self.downloader.storage.total_length-(self.downloader.numpieces-1)*self.downloader.storage.piece_length)
- self.peermeasure.update_rate(self.downloader.storage.total_length-(self.downloader.numpieces-1)*self.downloader.storage.piece_length)
- else:
- self.downloader.totalmeasure.update_rate(self.downloader.storage.piece_length)
- self.peermeasure.update_rate(self.downloader.storage.piece_length)
+ self.downloader.totalmeasure.update_rate(self.downloader.storage.piece_lengths[index])
+ self.peermeasure.update_rate(self.downloader.storage.piece_lengths[index])
if not self.have[index]:
self.have[index] = True
self.downloader.picker.got_have(index)
@@ -339,7 +335,7 @@
self.backlog = backlog
self.max_rate_period = max_rate_period
self.measurefunc = measurefunc
- self.totalmeasure = Measure(max_rate_period*storage.piece_length/storage.request_size)
+ self.totalmeasure = Measure(max_rate_period*(float(storage.datalength)/float(len(storage.piece_lengths)))/storage.request_size)
self.numpieces = numpieces
self.chunksize = chunksize
self.snub_time = snub_time
Modified: debtorrent/trunk/DebTorrent/BT1/Statistics.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Statistics.py?rev=15&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Statistics.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Statistics.py Thu Apr 26 20:37:54 2007
@@ -31,8 +31,7 @@
self.placesopen = None
self.storage_totalpieces = len(self.storage.hashes)
- # No change needed, not called in current implmentation
- def set_dirstats(self, files, piece_length):
+ def set_dirstats(self, files, piece_lengths):
self.piecescomplete = 0
self.placesopen = 0
self.filelistupdated = Event()
@@ -44,6 +43,8 @@
self.filecomplete = [False for x in frange]
self.fileinplace = [False for x in frange]
start = 0L
+ cur_piece = 0
+ piece_total = 0L
for i in frange:
l = files[i][1]
if l == 0:
@@ -53,11 +54,19 @@
else:
fp = self.filepieces[i]
fp2 = self.filepieces2[i]
- for piece in range(int(start/piece_length),
- int((start+l-1)/piece_length)+1):
+ start += l
+ start_piece = cur_piece
+ for cur_piece in xrange(start_piece,len(piece_lengths)+1):
+ if piece_total >= start:
+ break
+ piece_total += piece_lengths[cur_piece]
+ end_piece = cur_piece-1
+ if piece_total > start:
+ cur_piece -= 1
+ piece_total -= piece_lengths[cur_piece]
+ for piece in range(start_piece,end_piece+1):
fp.append(piece)
fp2.append(piece)
- start += l
def update(self):
Modified: debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py?rev=15&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/StorageWrapper.py Thu Apr 26 20:37:54 2007
@@ -74,7 +74,8 @@
self.request_size = long(request_size)
self.hashes = hashes
self.piece_sizes = piece_sizes
- self.piece_begins = [0l]
+ self.piece_lengths = piece_sizes
+ self.piece_begins = [0l]*len(piece_sizes)
for i in xrange(1,len(piece_sizes)):
self.piece_begins[i] = self.piece_begins[i-1] + self.piece_sizes[i-1]
self.datalength = datalength
More information about the Debtorrent-commits
mailing list