Pārlūkot izejas kodu

2009-07-04 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	In a single file download, file size becomes known just after
	downloading, set total length to FileEntry object when download
	completed.	
	* src/DownloadCommand.cc
Tatsuhiro Tsujikawa 16 gadi atpakaļ
vecāks
revīzija
1052600862
2 mainītis faili ar 18 papildinājumiem un 0 dzēšanām
  1. 7 0
      ChangeLog
  2. 11 0
      src/DownloadCommand.cc

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+2009-07-04  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	In a single file download, file size becomes known just after
+	downloading, set total length to FileEntry object when download
+	completed.	
+	* src/DownloadCommand.cc
+
 2009-07-04  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Use std::vector::reserve() for fileEntries and pieceHashes in

+ 11 - 0
src/DownloadCommand.cc

@@ -260,6 +260,17 @@ void DownloadCommand::checkLowestDownloadSpeed() const
 
 bool DownloadCommand::prepareForNextSegment() {
   if(_requestGroup->downloadFinished()) {
+    // If this is a single file download, and file size becomes known
+    // just after downloading, set total length to FileEntry object
+    // here.
+    if(_requestGroup->getDownloadContext()->getFileEntries().size() == 1) {
+      const SharedHandle<FileEntry>& fileEntry =
+	_requestGroup->getDownloadContext()->getFirstFileEntry();
+      if(fileEntry->getLength() == 0) {
+	fileEntry->setLength
+	  (_requestGroup->getPieceStorage()->getCompletedLength());
+      }
+    }
 #ifdef ENABLE_MESSAGE_DIGEST
     CheckIntegrityEntryHandle entry(new ChecksumCheckIntegrityEntry(_requestGroup));
     if(entry->isValidationReady()) {