mirror of https://github.com/aria2/aria2
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.ccpull/1/head
parent
56265173bd
commit
625a102d1b
15
ChangeLog
15
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>
|
2009-12-04 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Documented --interface option in man page.
|
Documented --interface option in man page.
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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: {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue