From 967dade8b2b498d5a4c562b98608a95b4c339f4f Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 5 Oct 2009 14:51:05 +0000 Subject: [PATCH] 2009-10-05 Tatsuhiro Tsujikawa Code clean up * src/BtPostDownloadHandler.cc * src/ContentTypeRequestGroupCriteria.cc * src/ContentTypeRequestGroupCriteria.h * src/DownloadHandlerConstants.cc * src/DownloadHandlerConstants.h * src/DownloadHandlerFactory.cc * src/MetalinkPostDownloadHandler.cc --- ChangeLog | 11 ++++++ src/BtPostDownloadHandler.cc | 11 ++++-- src/ContentTypeRequestGroupCriteria.cc | 53 +++++++++++--------------- src/ContentTypeRequestGroupCriteria.h | 22 +++++------ src/DownloadHandlerConstants.cc | 18 +++++---- src/DownloadHandlerConstants.h | 10 ++--- src/DownloadHandlerFactory.cc | 14 +++++-- src/MetalinkPostDownloadHandler.cc | 10 +++-- 8 files changed, 82 insertions(+), 67 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7098c4dd..e0cd9094 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-10-05 Tatsuhiro Tsujikawa + + Code clean up + * src/BtPostDownloadHandler.cc + * src/ContentTypeRequestGroupCriteria.cc + * src/ContentTypeRequestGroupCriteria.h + * src/DownloadHandlerConstants.cc + * src/DownloadHandlerConstants.h + * src/DownloadHandlerFactory.cc + * src/MetalinkPostDownloadHandler.cc + 2009-10-05 Tatsuhiro Tsujikawa Don't save control file when aria2 exists while checking piece diff --git a/src/BtPostDownloadHandler.cc b/src/BtPostDownloadHandler.cc index 14d3c4ae..1916f01c 100644 --- a/src/BtPostDownloadHandler.cc +++ b/src/BtPostDownloadHandler.cc @@ -52,8 +52,11 @@ namespace aria2 { BtPostDownloadHandler::BtPostDownloadHandler() { SharedHandle cri - (new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getBtContentTypes(), - DownloadHandlerConstants::getBtExtensions())); + (new ContentTypeRequestGroupCriteria + (DownloadHandlerConstants::getBtContentTypes().begin(), + DownloadHandlerConstants::getBtContentTypes().end(), + DownloadHandlerConstants::getBtExtensions().begin(), + DownloadHandlerConstants::getBtExtensions().end())); setCriteria(cri); } @@ -79,8 +82,8 @@ void BtPostDownloadHandler::getNextRequestGroups } SharedHandle context(new DownloadContext()); context->setDir(requestGroup->getDownloadContext()->getDir()); - bittorrent::loadFromMemory(content, context, - File(requestGroup->getFirstFilePath()).getBasename()); + bittorrent::loadFromMemory + (content, context, File(requestGroup->getFirstFilePath()).getBasename()); rg->setDownloadContext(context); context->setOwnerRequestGroup(rg.get()); diff --git a/src/ContentTypeRequestGroupCriteria.cc b/src/ContentTypeRequestGroupCriteria.cc index d479bc88..1b9ade2c 100644 --- a/src/ContentTypeRequestGroupCriteria.cc +++ b/src/ContentTypeRequestGroupCriteria.cc @@ -33,6 +33,9 @@ */ /* copyright --> */ #include "ContentTypeRequestGroupCriteria.h" + +#include + #include "RequestGroup.h" #include "Util.h" #include "FileEntry.h" @@ -40,45 +43,33 @@ namespace aria2 { -ContentTypeRequestGroupCriteria::ContentTypeRequestGroupCriteria(const std::deque& contentTypes, - const std::deque& extensions): - _contentTypes(contentTypes), - _extensions(extensions) {} +template +bool tailMatch +(InputIterator first, InputIterator last, const std::string& target) +{ + for(; first != last; ++first) { + if(Util::endsWith(target, *first)) { + return true; + } + } + return false; +} -ContentTypeRequestGroupCriteria::~ContentTypeRequestGroupCriteria() {} - -bool ContentTypeRequestGroupCriteria::match(const RequestGroup* requestGroup) const +bool ContentTypeRequestGroupCriteria::match +(const RequestGroup* requestGroup) const { if(requestGroup->getDownloadContext()->getFileEntries().size() != 1) { return false; } - if(forwardMatch(requestGroup->getFirstFilePath(), _extensions)) { + if(tailMatch(_extensions.begin(), _extensions.end(), + requestGroup->getFirstFilePath())) { return true; } else { - return exactMatch - (requestGroup->getDownloadContext()->getFirstFileEntry()->getContentType(), - _contentTypes); + return + std::find(_contentTypes.begin(), _contentTypes.end(), + requestGroup->getDownloadContext()->getFirstFileEntry()-> + getContentType()) != _contentTypes.end(); } } -bool ContentTypeRequestGroupCriteria::forwardMatch(const std::string& target, const std::deque& candidates) const -{ - for(std::deque::const_iterator itr = candidates.begin(); itr != candidates.end(); ++itr) { - if(Util::endsWith(target, *itr)) { - return true; - } - } - return false; -} - -bool ContentTypeRequestGroupCriteria::exactMatch(const std::string& target, const std::deque& candidates) const -{ - for(std::deque::const_iterator itr = candidates.begin(); itr != candidates.end(); ++itr) { - if(target == *itr) { - return true; - } - } - return false; -} - } // namespace aria2 diff --git a/src/ContentTypeRequestGroupCriteria.h b/src/ContentTypeRequestGroupCriteria.h index f1775d9a..6d1fa26a 100644 --- a/src/ContentTypeRequestGroupCriteria.h +++ b/src/ContentTypeRequestGroupCriteria.h @@ -37,25 +37,23 @@ #include "RequestGroupCriteria.h" #include -#include +#include namespace aria2 { class ContentTypeRequestGroupCriteria:public RequestGroupCriteria { private: - std::deque _contentTypes; - std::deque _extensions; - - bool forwardMatch(const std::string& target, const std::deque& candidates) const; - - bool exactMatch(const std::string& target, const std::deque& candidates) const; - + std::vector _contentTypes; + std::vector _extensions; public: - ContentTypeRequestGroupCriteria(const std::deque& contentTypes, - const std::deque& extensions); - - virtual ~ContentTypeRequestGroupCriteria(); + template + ContentTypeRequestGroupCriteria(InputIterator contentTypeFirst, + InputIterator contentTypeLast, + InputIterator extensionFirst, + InputIterator extensionLast): + _contentTypes(contentTypeFirst, contentTypeLast), + _extensions(extensionFirst, extensionLast) {} virtual bool match(const RequestGroup* requestGroup) const; }; diff --git a/src/DownloadHandlerConstants.cc b/src/DownloadHandlerConstants.cc index 457f5a38..9fb3b73a 100644 --- a/src/DownloadHandlerConstants.cc +++ b/src/DownloadHandlerConstants.cc @@ -49,33 +49,35 @@ const char* DownloadHandlerConstants::BT_CONTENT_TYPES[] = { "application/x-bittorrent" }; -const std::deque& DownloadHandlerConstants::getMetalinkExtensions() +const std::vector& +DownloadHandlerConstants::getMetalinkExtensions() { - static const std::deque l + static const std::vector l (&METALINK_EXTENSIONS[0], &METALINK_EXTENSIONS[arrayLength(METALINK_EXTENSIONS)]); return l; } -const std::deque& DownloadHandlerConstants::getMetalinkContentTypes() +const std::vector& +DownloadHandlerConstants::getMetalinkContentTypes() { - static const std::deque l + static const std::vector l (&METALINK_CONTENT_TYPES[0], &METALINK_CONTENT_TYPES[arrayLength(METALINK_CONTENT_TYPES)]); return l; } -const std::deque& DownloadHandlerConstants::getBtExtensions() +const std::vector& DownloadHandlerConstants::getBtExtensions() { - static const std::deque l + static const std::vector l (&BT_EXTENSIONS[0], &BT_EXTENSIONS[arrayLength(BT_EXTENSIONS)]); return l; } -const std::deque& DownloadHandlerConstants::getBtContentTypes() +const std::vector& DownloadHandlerConstants::getBtContentTypes() { - static const std::deque l + static const std::vector l (&BT_CONTENT_TYPES[0], &BT_CONTENT_TYPES[arrayLength(BT_CONTENT_TYPES)]); return l; diff --git a/src/DownloadHandlerConstants.h b/src/DownloadHandlerConstants.h index 4a8699a0..61c20f1a 100644 --- a/src/DownloadHandlerConstants.h +++ b/src/DownloadHandlerConstants.h @@ -37,7 +37,7 @@ #include "common.h" #include -#include +#include namespace aria2 { @@ -46,19 +46,19 @@ class DownloadHandlerConstants public: static const char* METALINK_EXTENSIONS[]; - static const std::deque& getMetalinkExtensions(); + static const std::vector& getMetalinkExtensions(); static const char* METALINK_CONTENT_TYPES[]; - static const std::deque& getMetalinkContentTypes(); + static const std::vector& getMetalinkContentTypes(); static const char* BT_EXTENSIONS[]; - static const std::deque& getBtExtensions(); + static const std::vector& getBtExtensions(); static const char* BT_CONTENT_TYPES[]; - static const std::deque& getBtContentTypes(); + static const std::vector& getBtContentTypes(); }; } // namespace aria2 diff --git a/src/DownloadHandlerFactory.cc b/src/DownloadHandlerFactory.cc index 8be13559..15a8cd98 100644 --- a/src/DownloadHandlerFactory.cc +++ b/src/DownloadHandlerFactory.cc @@ -70,8 +70,11 @@ DownloadHandlerFactory::getMetalinkPreDownloadHandler() _metalinkPreDownloadHandler.reset(new MemoryBufferPreDownloadHandler()); RequestGroupCriteriaHandle criteria - (new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getMetalinkContentTypes(), - DownloadHandlerConstants::getMetalinkExtensions())); + (new ContentTypeRequestGroupCriteria + (DownloadHandlerConstants::getMetalinkContentTypes().begin(), + DownloadHandlerConstants::getMetalinkContentTypes().end(), + DownloadHandlerConstants::getMetalinkExtensions().begin(), + DownloadHandlerConstants::getMetalinkExtensions().end())); _metalinkPreDownloadHandler->setCriteria(criteria); } return _metalinkPreDownloadHandler; @@ -97,8 +100,11 @@ DownloadHandlerFactory::getBtPreDownloadHandler() _btPreDownloadHandler.reset(new MemoryBufferPreDownloadHandler()); RequestGroupCriteriaHandle criteria - (new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getBtContentTypes(), - DownloadHandlerConstants::getBtExtensions())); + (new ContentTypeRequestGroupCriteria + (DownloadHandlerConstants::getBtContentTypes().begin(), + DownloadHandlerConstants::getBtContentTypes().end(), + DownloadHandlerConstants::getBtExtensions().begin(), + DownloadHandlerConstants::getBtExtensions().end())); _btPreDownloadHandler->setCriteria(criteria); } return _btPreDownloadHandler; diff --git a/src/MetalinkPostDownloadHandler.cc b/src/MetalinkPostDownloadHandler.cc index 038a3687..eda93afd 100644 --- a/src/MetalinkPostDownloadHandler.cc +++ b/src/MetalinkPostDownloadHandler.cc @@ -50,8 +50,11 @@ namespace aria2 { MetalinkPostDownloadHandler::MetalinkPostDownloadHandler() { SharedHandle cri - (new ContentTypeRequestGroupCriteria(DownloadHandlerConstants::getMetalinkContentTypes(), - DownloadHandlerConstants::getMetalinkExtensions())); + (new ContentTypeRequestGroupCriteria + (DownloadHandlerConstants::getMetalinkContentTypes().begin(), + DownloadHandlerConstants::getMetalinkContentTypes().end(), + DownloadHandlerConstants::getMetalinkExtensions().begin(), + DownloadHandlerConstants::getMetalinkExtensions().end())); setCriteria(cri); } @@ -63,7 +66,8 @@ void MetalinkPostDownloadHandler::getNextRequestGroups { _logger->debug("Generating RequestGroups for Metalink file %s", requestGroup->getFirstFilePath().c_str()); - SharedHandle diskAdaptor = requestGroup->getPieceStorage()->getDiskAdaptor(); + SharedHandle diskAdaptor = + requestGroup->getPieceStorage()->getDiskAdaptor(); try { diskAdaptor->openExistingFile(); //requestOption.put(PREF_DIR, requestGroup->getDownloadContext()->getDir());