Przeglądaj źródła

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

	Halt metadata download immediately when metadata download is done.
	Don't wait unresponsive tracker.
	* src/ByteArrayDiskWriter.h
	* src/DefaultBtInteractive.cc
	* src/DefaultExtensionMessageFactory.cc
	* src/DefaultExtensionMessageFactory.h
	* src/PeerInteractionCommand.cc
	* src/UTMetadataDataExtensionMessage.cc
	* src/UTMetadataDataExtensionMessage.h
	* src/UTMetadataRequestExtensionMessage.cc
	* test/UTMetadataDataExtensionMessageTest.cc
	* test/UTMetadataRequestExtensionMessageTest.cc
Tatsuhiro Tsujikawa 16 lat temu
rodzic
commit
625a102d1b

+ 15 - 0
ChangeLog

@@ -1,3 +1,18 @@
+2009-12-04  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Halt metadata download immediately when metadata download is done.
+	Don't wait unresponsive tracker.
+	* src/ByteArrayDiskWriter.h
+	* src/DefaultBtInteractive.cc
+	* src/DefaultExtensionMessageFactory.cc
+	* src/DefaultExtensionMessageFactory.h
+	* src/PeerInteractionCommand.cc
+	* src/UTMetadataDataExtensionMessage.cc
+	* src/UTMetadataDataExtensionMessage.h
+	* src/UTMetadataRequestExtensionMessage.cc
+	* test/UTMetadataDataExtensionMessageTest.cc
+	* test/UTMetadataRequestExtensionMessageTest.cc
+
 2009-12-04  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Documented --interface option in man page.

+ 5 - 0
src/ByteArrayDiskWriter.h

@@ -70,6 +70,11 @@ public:
   {
     buf.str(s);
   }
+
+  std::string getString() const
+  {
+    return buf.str();
+  }
 };
 
 typedef SharedHandle<ByteArrayDiskWriter> ByteArrayDiskWriterHandle;

+ 4 - 0
src/DefaultBtInteractive.cc

@@ -483,6 +483,10 @@ void DefaultBtInteractive::doInteractionProcessing() {
 	  _pieceStorage->cancelPiece(_pieceStorage->getPiece(*i));
 	}
       }
+      if(_pieceStorage->downloadFinished()) {
+	_downloadContext->getOwnerRequestGroup()->setForceHaltRequested
+	  (true, RequestGroup::NONE);
+      }
     }
   } else {
     checkActiveInteraction();

+ 0 - 2
src/DefaultExtensionMessageFactory.cc

@@ -52,7 +52,6 @@
 #include "bencode.h"
 #include "PieceStorage.h"
 #include "UTMetadataRequestTracker.h"
-#include "BtRuntime.h"
 #include "RequestGroup.h"
 
 namespace aria2 {
@@ -137,7 +136,6 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t
 	m->setUTMetadataRequestTracker(_tracker);
 	m->setPieceStorage(_dctx->getOwnerRequestGroup()->getPieceStorage());
 	m->setDownloadContext(_dctx);
-	m->setBtRuntime(_btRuntime);
 	return m;
       }
       case 2: {

+ 0 - 8
src/DefaultExtensionMessageFactory.h

@@ -47,7 +47,6 @@ class DownloadContext;
 class BtMessageFactory;
 class BtMessageDispatcher;
 class UTMetadataRequestTracker;
-class BtRuntime;
 
 class DefaultExtensionMessageFactory:public ExtensionMessageFactory {
 private:
@@ -59,8 +58,6 @@ private:
 
   SharedHandle<DownloadContext> _dctx;
 
-  SharedHandle<BtRuntime> _btRuntime;
-
   WeakHandle<BtMessageFactory> _messageFactory;
 
   WeakHandle<BtMessageDispatcher> _dispatcher;
@@ -111,11 +108,6 @@ public:
   {
     _tracker = tracker;
   }
-
-  void setBtRuntime(const SharedHandle<BtRuntime>& btRuntime)
-  {
-    _btRuntime = btRuntime;
-  }
 };
 
 typedef SharedHandle<DefaultExtensionMessageFactory> DefaultExtensionMessageFactoryHandle;

+ 0 - 1
src/PeerInteractionCommand.cc

@@ -122,7 +122,6 @@ PeerInteractionCommand::PeerInteractionCommand
     (_requestGroup->getDownloadContext());
   extensionMessageFactory->setUTMetadataRequestTracker
     (utMetadataRequestTracker);
-  extensionMessageFactory->setBtRuntime(_btRuntime);
   // PieceStorage will be set later.
 
   SharedHandle<DefaultBtMessageFactory> factory(new DefaultBtMessageFactory());

+ 0 - 2
src/UTMetadataDataExtensionMessage.cc

@@ -45,7 +45,6 @@
 #include "bittorrent_helper.h"
 #include "DiskAdaptor.h"
 #include "Piece.h"
-#include "BtRuntime.h"
 #include "LogFactory.h"
 
 namespace aria2 {
@@ -88,7 +87,6 @@ void UTMetadataDataExtensionMessage::doReceivedAction()
       if(std::string(&infoHash[0], &infoHash[INFO_HASH_LENGTH]) == 
 	 attrs[bittorrent::INFO_HASH].s()){
 	_logger->info("Got ut_metadata");
-	_btRuntime->setHalt(true);
       } else {
 	_logger->info("Got wrong ut_metadata");
 	for(size_t i = 0; i < _dctx->getNumPieces(); ++i) {

+ 0 - 8
src/UTMetadataDataExtensionMessage.h

@@ -42,7 +42,6 @@ namespace aria2 {
 class DownloadContext;
 class PieceStorage;
 class UTMetadataRequestTracker;
-class BtRuntime;
 class Logger;
 
 class UTMetadataDataExtensionMessage:public UTMetadataExtensionMessage {
@@ -55,8 +54,6 @@ private:
 
   SharedHandle<PieceStorage> _pieceStorage;
 
-  SharedHandle<BtRuntime> _btRuntime;
-
   WeakHandle<UTMetadataRequestTracker> _tracker;
 
   Logger* _logger;
@@ -104,11 +101,6 @@ public:
   {
     _dctx = dctx;
   }
-
-  void setBtRuntime(const SharedHandle<BtRuntime>& btRuntime)
-  {
-    _btRuntime = btRuntime;
-  }
 };
 
 } // namespace aria2

+ 0 - 1
src/UTMetadataRequestExtensionMessage.cc

@@ -49,7 +49,6 @@
 #include "DownloadContext.h"
 #include "BtMessage.h"
 #include "PieceStorage.h"
-#include "BtRuntime.h"
 
 namespace aria2 {
 

+ 2 - 5
test/UTMetadataDataExtensionMessageTest.cc

@@ -7,7 +7,6 @@
 #include "BtConstants.h"
 #include "PieceStorage.h"
 #include "DownloadContext.h"
-#include "BtRuntime.h"
 #include "DirectDiskAdaptor.h"
 #include "ByteArrayDiskWriter.h"
 #include "BDE.h"
@@ -71,7 +70,6 @@ void UTMetadataDataExtensionMessageTest::testDoReceivedAction()
   diskAdaptor->setDiskWriter(diskWriter);
   SharedHandle<MockPieceStorage> pieceStorage(new MockPieceStorage());
   pieceStorage->setDiskAdaptor(diskAdaptor);
-  SharedHandle<BtRuntime> btRuntime(new BtRuntime());
   SharedHandle<UTMetadataRequestTracker> tracker
     (new UTMetadataRequestTracker());
   SharedHandle<DownloadContext> dctx(new DownloadContext());
@@ -91,7 +89,6 @@ void UTMetadataDataExtensionMessageTest::testDoReceivedAction()
 
   UTMetadataDataExtensionMessage m(1);
   m.setPieceStorage(pieceStorage);
-  m.setBtRuntime(btRuntime);
   m.setUTMetadataRequestTracker(tracker);
   m.setDownloadContext(dctx);
 
@@ -107,11 +104,11 @@ void UTMetadataDataExtensionMessageTest::testDoReceivedAction()
   m.setIndex(0);
   m.setData(piece0);
   m.doReceivedAction();
-  CPPUNIT_ASSERT(!btRuntime->isHalt());
 
   tracker->add(0);
   m.doReceivedAction();
-  CPPUNIT_ASSERT(btRuntime->isHalt());
+
+  CPPUNIT_ASSERT_EQUAL(metadata, diskWriter->getString());
 }
 
 } // namespace aria2

+ 0 - 1
test/UTMetadataRequestExtensionMessageTest.cc

@@ -14,7 +14,6 @@
 #include "UTMetadataRejectExtensionMessage.h"
 #include "UTMetadataDataExtensionMessage.h"
 #include "PieceStorage.h"
-#include "BtRuntime.h"
 #include "extension_message_test_helper.h"
 
 namespace aria2 {