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>
Documented --interface option in man page.

View File

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

View File

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

View File

@ -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: {

View File

@ -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;

View File

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

View File

@ -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) {

View File

@ -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

View File

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

View File

@ -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

View File

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