[Debtorrent-commits] r48 - in /debtorrent/trunk/DebTorrent: BT1/FileSelector.py BT1/Storage.py download_bt1.py
camrdale-guest at users.alioth.debian.org
camrdale-guest at users.alioth.debian.org
Thu May 17 05:19:58 UTC 2007
Author: camrdale-guest
Date: Thu May 17 05:19:57 2007
New Revision: 48
URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=48
Log:
Fixed a bug in bittornado that prevented using priorities with pre-allocation.
For more information: http://forums.degreez.net/viewtopic.php?t=7155
Modified:
debtorrent/trunk/DebTorrent/BT1/FileSelector.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=48&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/FileSelector.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/FileSelector.py Thu May 17 05:19:57 2007
@@ -117,6 +117,30 @@
self.new_partials = None
+ def _initialize_files_disabled(self, old_priority, new_priority):
+ old_disabled = [p == -1 for p in old_priority]
+ new_disabled = [p == -1 for p in new_priority]
+ files_updated = False
+ try:
+ for f in xrange(self.numfiles):
+ if new_disabled[f] and not old_disabled[f]:
+ self.storage.disable_file(f)
+ files_updated = True
+ if old_disabled[f] and not new_disabled[f]:
+ self.storage.enable_file(f)
+ files_updated = True
+ except (IOError, OSError), e:
+ if new_disabled[f]:
+ msg = "can't open partial file for "
+ else:
+ msg = 'unable to open '
+ self.failfunc(msg + self.files[f][0] + ': ' + str(e))
+ return False
+ if files_updated:
+ self.storage.reset_file_status()
+ return True
+
+
def _set_files_disabled(self, old_priority, new_priority):
old_disabled = [p == -1 for p in old_priority]
new_disabled = [p == -1 for p in new_priority]
@@ -202,6 +226,15 @@
return new_piece_priority
+ def initialize_priorities_now(self, new_priority = None):
+ if not new_priority:
+ return
+ old_priority = self.priority
+ self.priority = new_priority
+ if not self._initialize_files_disabled(old_priority, new_priority):
+ return
+# self.piece_priority = self._set_piece_priority(new_priority)
+
def set_priorities_now(self, new_priority = None):
if not new_priority:
new_priority = self.new_priority
Modified: debtorrent/trunk/DebTorrent/BT1/Storage.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/Storage.py?rev=48&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/Storage.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/Storage.py Thu May 17 05:19:57 2007
@@ -421,7 +421,7 @@
r = self._get_disabled_ranges(f)
if not r:
return
- for file, begin, end in r[2]:
+ for begin, end, offset, file in r[2]:
if not os.path.isdir(self.bufferdir):
os.makedirs(self.bufferdir)
if not exists(file):
@@ -432,7 +432,7 @@
self.tops[file] = getsize(file)
if not self.mtimes.has_key(file):
self.mtimes[file] = getmtime(file)
- self.working_ranges[f] = r[0]
+ self.working_ranges[f] = r[2]
reset_file_status = _reset_ranges
@@ -473,7 +473,7 @@
if not self.files[i][1]: # length == 0
continue
if self.disabled[i]:
- for file, start, end in self._get_disabled_ranges(i)[2]:
+ for start, end, offset, file in self._get_disabled_ranges(i)[2]:
pfiles.extend([basename(file),getsize(file),int(getmtime(file))])
continue
file = self.files[i][0]
Modified: debtorrent/trunk/DebTorrent/download_bt1.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/download_bt1.py?rev=48&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/download_bt1.py (original)
+++ debtorrent/trunk/DebTorrent/download_bt1.py Thu May 17 05:19:57 2007
@@ -656,6 +656,9 @@
data = data.get('resume data')
if data:
self.fileselector.unpickle(data)
+
+ if self.priority:
+ self.fileselector.initialize_priorities_now(self.priority)
self.checking = True
if old_style:
More information about the Debtorrent-commits
mailing list