[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