Kaynağa Gözat

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

	Call RequestGroup::createNextCommandWithAdj() from
	BtFileAllocationEntry if at least one FileEntry has URI.  The
	static function hasAssociatedUri in RequestGroup.cc is renamed as
	isUriSuppliedForRequsetFileEntry() and placed in FileEntry.h.
	* src/BtFileAllocationEntry.cc
	* src/FileEntry.h
	* src/RequestGroup.cc
Tatsuhiro Tsujikawa 16 yıl önce
ebeveyn
işleme
24d258cf66
4 değiştirilmiş dosya ile 30 ekleme ve 15 silme
  1. 10 0
      ChangeLog
  2. 5 1
      src/BtFileAllocationEntry.cc
  3. 12 0
      src/FileEntry.h
  4. 3 14
      src/RequestGroup.cc

+ 10 - 0
ChangeLog

@@ -1,3 +1,13 @@
+2009-07-05  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Call RequestGroup::createNextCommandWithAdj() from
+	BtFileAllocationEntry if at least one FileEntry has URI.  The
+	static function hasAssociatedUri in RequestGroup.cc is renamed as
+	isUriSuppliedForRequsetFileEntry() and placed in FileEntry.h.
+	* src/BtFileAllocationEntry.cc
+	* src/FileEntry.h
+	* src/RequestGroup.cc
+
 2009-07-05  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Generate peer ID after SimpleRandomizer is initialized.

+ 5 - 1
src/BtFileAllocationEntry.cc

@@ -55,7 +55,11 @@ void BtFileAllocationEntry::prepareForNextAction(std::deque<Command*>& commands,
   BtSetup().setup(commands, _requestGroup, e, _requestGroup->getOption().get());
   if(!_requestGroup->downloadFinished()) {
     _requestGroup->getDownloadContext()->resetDownloadStartTime();
-    _requestGroup->createNextCommandWithAdj(commands, e, 0);
+    const std::vector<SharedHandle<FileEntry> >& fileEntries =
+      _requestGroup->getDownloadContext()->getFileEntries();
+    if(isUriSuppliedForRequsetFileEntry(fileEntries.begin(), fileEntries.end())) {
+      _requestGroup->createNextCommandWithAdj(commands, e, 0);
+    }
   }
 }
 

+ 12 - 0
src/FileEntry.h

@@ -265,6 +265,18 @@ size_t countRequestedFileEntry(InputIterator first, InputIterator last)
   return count;
 }
 
+// Returns true if at least one requested FileEntry has URIs.
+template<typename InputIterator>
+bool isUriSuppliedForRequsetFileEntry(InputIterator first, InputIterator last)
+{
+  for(; first != last; ++first) {
+    if((*first)->isRequested() && !(*first)->getRemainingUris().empty()) {
+      return true;
+    }
+  }
+  return false;
+}
+
 // Writes first filename to given o.  If memory is true, the output is
 // "[MEMORY]" plus the basename of the first filename.  If there is no
 // FileEntry, writes "n/a" to o.  If more than 1 FileEntry are in the

+ 3 - 14
src/RequestGroup.cc

@@ -398,17 +398,6 @@ void RequestGroup::processCheckIntegrityEntry(std::deque<Command*>& commands,
     }
 }
 
-template<typename InputIterator>
-static bool hasAssociatedUri(InputIterator first, InputIterator last)
-{
-  for(; first != last; ++first) {
-    if((*first)->isRequested() && !(*first)->getRemainingUris().empty()) {
-      return true;
-    }
-  }
-  return false;
-}
-
 void RequestGroup::initPieceStorage()
 {
   if(_downloadContext->knowsTotalLength()) {
@@ -418,8 +407,9 @@ void RequestGroup::initPieceStorage()
     // Use LongestSequencePieceSelector when HTTP/FTP/BitTorrent integrated
     // downloads. Currently multi-file integrated download is not supported.
     if(_downloadContext->hasAttribute(bittorrent::BITTORRENT) &&
-       hasAssociatedUri(_downloadContext->getFileEntries().begin(),
-			_downloadContext->getFileEntries().end())) {
+       isUriSuppliedForRequsetFileEntry
+       (_downloadContext->getFileEntries().begin(),
+	_downloadContext->getFileEntries().end())) {
       _logger->debug("Using LongestSequencePieceSelector");
       ps->setPieceSelector
 	(SharedHandle<PieceSelector>(new LongestSequencePieceSelector()));
@@ -635,7 +625,6 @@ void RequestGroup::createNextCommand(std::deque<Command*>& commands,
 
   for(; numCommand--; ) {
     Command* command = new CreateRequestCommand(e->newCUID(), this, e);
-    _logger->debug("filePath=%s", _downloadContext->getFileEntries().front()->getPath().c_str());
     commands.push_back(command);
   }
   if(!commands.empty()) {