[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