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
pull/1/head
Tatsuhiro Tsujikawa 2009-12-04 12:48:54 +00:00
parent 56265173bd
commit 625a102d1b
11 changed files with 26 additions and 28 deletions

View File

@ -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> 2009-12-04 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Documented --interface option in man page. Documented --interface option in man page.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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