r364 - in /debtorrent/trunk/DebTorrent: BT1/AptListener.py SocketHandler.py download_bt1.py

camrdale-guest at users.alioth.debian.org camrdale-guest at users.alioth.debian.org
Sun Jan 27 22:38:02 UTC 2008


Author: camrdale-guest
Date: Sun Jan 27 22:38:02 2008
New Revision: 364

URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=364
Log:
Return files instead of strings to HTTPHandler for debs as well.

Modified:
    debtorrent/trunk/DebTorrent/BT1/AptListener.py
    debtorrent/trunk/DebTorrent/SocketHandler.py
    debtorrent/trunk/DebTorrent/download_bt1.py

Modified: debtorrent/trunk/DebTorrent/BT1/AptListener.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/AptListener.py?rev=364&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/AptListener.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/AptListener.py Sun Jan 27 22:38:02 2008
@@ -489,19 +489,16 @@
             return (404, 'Not Found', {'Server': VERSION, 'Content-Type': 'text/plain', 'Pragma': 'no-cache'}, alas)
         
         # Check if the file has already been downloaded
-        data = ''
         pieces_needed = []
         start_piece, end_piece = d.fileselector.storage.file_pieces[f]
         for piece in xrange(start_piece, end_piece+1):
             if not d.storagewrapper.do_I_have(piece):
                 pieces_needed.append(piece)
-            elif not pieces_needed:
-                piecebuf = d.storagewrapper.get_piece(piece, 0, -1)
-                data += piecebuf.getarray().tostring()
-                piecebuf.release()
         
         if not pieces_needed:
-            return (200, 'OK', {'Server': VERSION, 'Content-Type': 'text/plain'}, data)
+            filename = d.getFilepath(f)
+            file = open(filename, 'rb')
+            return (200, 'OK', {'Server': VERSION, 'Content-Type': 'text/plain'}, file)
 
         if not d.unpauseflag.isSet():
             d.Unpause()
@@ -626,19 +623,16 @@
             return
 
         # Check if the file has been downloaded
-        data = ''
         pieces_needed = []
         start_piece, end_piece = d.fileselector.storage.file_pieces[f]
         for piece in xrange(start_piece, end_piece+1):
             if not d.storagewrapper.do_I_have(piece):
                 pieces_needed.append(piece)
-            elif not pieces_needed:
-                piecebuf = d.storagewrapper.get_piece(piece, 0, -1)
-                data += piecebuf.getarray().tostring()
-                piecebuf.release()
         
         if not pieces_needed:
-            connection.answer((200, 'OK', {'Server': VERSION, 'Content-Type': 'text/plain'}, data), httpreq)
+            filename = d.getFilepath(f)
+            file = open(filename, 'rb')
+            connection.answer((200, 'OK', {'Server': VERSION, 'Content-Type': 'text/plain'}, file), httpreq)
             return
 
         # Something strange has happened, requeue it

Modified: debtorrent/trunk/DebTorrent/SocketHandler.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/SocketHandler.py?rev=364&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/SocketHandler.py (original)
+++ debtorrent/trunk/DebTorrent/SocketHandler.py Sun Jan 27 22:38:02 2008
@@ -197,6 +197,7 @@
                             self.buffer.insert(0, data)
                         else:
                             # End of file has been reached
+                            self.buffer[0].close()
                             del self.buffer[0]
 
                     # Make sure there's still data to send

Modified: debtorrent/trunk/DebTorrent/download_bt1.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/download_bt1.py?rev=364&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/download_bt1.py (original)
+++ debtorrent/trunk/DebTorrent/download_bt1.py Sun Jan 27 22:38:02 2008
@@ -1552,6 +1552,21 @@
         except:
             return None
 
+    def getFilepath(self, f):
+        """Get the stored file name from a file index.
+        
+        @type f: C{int}
+        @param f: the index of the file
+        @rtype: C{string}
+        @return: the file name where the indexed file is stored.
+        
+        """
+        
+        try:
+            return self.files[f][0]
+        except:
+            return None
+
     def Pause(self):
         """Schedule the pausing of the download.
 




More information about the Debtorrent-commits mailing list