[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