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