[Debtorrent-commits] r13 - in /debtorrent/trunk/DebTorrent: BT1/FileSelector.py BT1/Statistics.py BT1/Storage.py download_bt1.py

camrdale-guest at users.alioth.debian.org camrdale-guest at users.alioth.debian.org
Thu Apr 26 19:15:21 UTC 2007


Author: camrdale-guest
Date: Thu Apr 26 19:15:21 2007
New Revision: 13

URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=13
Log:
Modified FileSelector to support variable-sized pieces

Modified:
    debtorrent/trunk/DebTorrent/BT1/FileSelector.py
    debtorrent/trunk/DebTorrent/BT1/Statistics.py
    debtorrent/trunk/DebTorrent/BT1/Storage.py
    debtorrent/trunk/DebTorrent/download_bt1.py

Modified: debtorrent/trunk/DebTorrent/BT1/FileSelector.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/FileSelector.py?rev=13&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/FileSelector.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/FileSelector.py Thu Apr 26 19:15:21 2007
@@ -11,7 +11,7 @@
 
 
 class FileSelector: # TODO change piece_length to piece_lengths array
-    def __init__(self, files, piece_length, bufferdir,
+    def __init__(self, files, piece_lengths, bufferdir,
                  storage, storagewrapper, sched, failfunc):
         self.files = files
         self.storage = storage
@@ -29,15 +29,25 @@
         self.new_partials = None
         self.filepieces = []
         total = 0L
+        piece_total = 0l
+        cur_piece = 0
         for file, length in files:
             if not length:
                 self.filepieces.append(())
             else:
-                pieces = range( int(total/piece_length),
-                                int((total+length-1)/piece_length)+1 )
+                total += length
+                start_piece = cur_piece
+                for cur_piece in xrange(start_piece,len(piece_lengths)+1):
+                    if piece_total >= total:
+                        break
+                    piece_total += piece_lengths[cur_piece]
+                end_piece = cur_piece-1
+                if piece_total > total:
+                    cur_piece -= 1
+                    piece_total -= piece_lengths[cur_piece]
+                pieces = range(start_piece,end_piece+1)
                 self.filepieces.append(tuple(pieces))
-                total += length
-        self.numpieces = int((total+piece_length-1)/piece_length)
+        self.numpieces = len(piece_lengths)
         self.piece_priority = [1] * self.numpieces
         
 

Modified: debtorrent/trunk/DebTorrent/BT1/Statistics.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Statistics.py?rev=13&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Statistics.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Statistics.py Thu Apr 26 19:15:21 2007
@@ -31,7 +31,7 @@
         self.placesopen = None
         self.storage_totalpieces = len(self.storage.hashes)
 
-    # TODO change piece_length to piece_lengths array
+    # No change needed, not called in current implmentation
     def set_dirstats(self, files, piece_length):
         self.piecescomplete = 0
         self.placesopen = 0

Modified: debtorrent/trunk/DebTorrent/BT1/Storage.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Storage.py?rev=13&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Storage.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Storage.py Thu Apr 26 19:15:21 2007
@@ -46,7 +46,7 @@
         numfiles = 0
         total = 0l
         so_far = 0l
-        cur_piece = 0l
+        cur_piece = 0
         piece_total = 0l
         self.handles = {}
         self.whandles = {}

Modified: debtorrent/trunk/DebTorrent/download_bt1.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/download_bt1.py?rev=13&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/download_bt1.py (original)
+++ debtorrent/trunk/DebTorrent/download_bt1.py Thu Apr 26 19:15:21 2007
@@ -536,7 +536,7 @@
             return None
 
         if self.selector_enabled:
-            self.fileselector = FileSelector(self.files, self.piece_lengths, self.datalength,
+            self.fileselector = FileSelector(self.files, self.piece_lengths,
                                              self.appdataobj.getPieceDir(self.infohash),
                                              self.storage, self.storagewrapper,
                                              self.rawserver.add_task,
@@ -702,7 +702,7 @@
                     self.connecter, self.httpdownloader, self.ratelimiter,
                     self.rerequest_lastfailed, self.filedatflag)
         if self.info.has_key('files'):
-            self.statistics.set_dirstats(self.files, self.piece_lengths, self.datalength)
+            self.statistics.set_dirstats(self.files, self.piece_lengths)
         if self.config['spew']:
             self.spewflag.set()
 




More information about the Debtorrent-commits mailing list