From 3da60af41e45a5adc0224d66683c3fad7fa2841c Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 12 May 2008 11:39:34 +0000 Subject: [PATCH] 2008-05-12 Tatsuhiro Tsujikawa Changed method sinature: MetalinkEntry::toFileEntry, MetalinkHelper::query, MetalinkHelper::parseAndQuery, Metalinker::queryEntry * src/Metalink2RequestGroup.cc * src/MetalinkEntry.cc * src/MetalinkEntry.h * src/MetalinkHelper.cc * src/MetalinkHelper.h * src/Metalinker.cc * src/Metalinker.h * src/main.cc * test/MetalinkHelperTest.cc * test/MetalinkerTest.cc --- ChangeLog | 17 +++++++++++++++++ src/Metalink2RequestGroup.cc | 8 ++++---- src/MetalinkEntry.cc | 10 +++++----- src/MetalinkEntry.h | 5 +++-- src/MetalinkHelper.cc | 28 +++++++++++++++------------- src/MetalinkHelper.h | 15 +++++++++------ src/Metalinker.cc | 18 ++++++++---------- src/Metalinker.h | 8 +++++--- src/main.cc | 7 ++++++- test/MetalinkHelperTest.cc | 14 +++++++------- test/MetalinkerTest.cc | 35 +++++++++++++++++++++-------------- 11 files changed, 100 insertions(+), 65 deletions(-) diff --git a/ChangeLog b/ChangeLog index deea0d2f..6cbf70bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2008-05-12 Tatsuhiro Tsujikawa + + Changed method sinature: + MetalinkEntry::toFileEntry, + MetalinkHelper::query, MetalinkHelper::parseAndQuery, + Metalinker::queryEntry + * src/Metalink2RequestGroup.cc + * src/MetalinkEntry.cc + * src/MetalinkEntry.h + * src/MetalinkHelper.cc + * src/MetalinkHelper.h + * src/Metalinker.cc + * src/Metalinker.h + * src/main.cc + * test/MetalinkHelperTest.cc + * test/MetalinkerTest.cc + 2008-05-12 Tatsuhiro Tsujikawa Changed method sinature: diff --git a/src/Metalink2RequestGroup.cc b/src/Metalink2RequestGroup.cc index c8a23826..7ced01c7 100644 --- a/src/Metalink2RequestGroup.cc +++ b/src/Metalink2RequestGroup.cc @@ -102,8 +102,8 @@ void Metalink2RequestGroup::generate(std::deque >& groups, const std::string& metalinkFile) { - std::deque > entries = MetalinkHelper::parseAndQuery(metalinkFile, - _option); + std::deque > entries; + MetalinkHelper::parseAndQuery(entries, metalinkFile, _option); createRequestGroup(groups, entries); } @@ -111,8 +111,8 @@ void Metalink2RequestGroup::generate(std::deque >& groups, const SharedHandle& binaryStream) { - std::deque > entries = MetalinkHelper::parseAndQuery(binaryStream, - _option); + std::deque > entries; + MetalinkHelper::parseAndQuery(entries, binaryStream, _option); createRequestGroup(groups, entries); } diff --git a/src/MetalinkEntry.cc b/src/MetalinkEntry.cc index e098e506..67ee2426 100644 --- a/src/MetalinkEntry.cc +++ b/src/MetalinkEntry.cc @@ -166,13 +166,13 @@ void MetalinkEntry::dropUnsupportedResource() { resources.end()); } -std::deque > -MetalinkEntry::toFileEntry(const std::deque >& metalinkEntries) +void MetalinkEntry::toFileEntry +(std::deque >& fileEntries, + const std::deque >& metalinkEntries) { - std::deque > entries; - std::transform(metalinkEntries.begin(), metalinkEntries.end(), std::back_inserter(entries), + std::transform(metalinkEntries.begin(), metalinkEntries.end(), + std::back_inserter(fileEntries), mem_fun_sh(&MetalinkEntry::getFile)); - return entries; } SharedHandle MetalinkEntry::getFile() const diff --git a/src/MetalinkEntry.h b/src/MetalinkEntry.h index c73174e8..9ad20105 100644 --- a/src/MetalinkEntry.h +++ b/src/MetalinkEntry.h @@ -81,8 +81,9 @@ public: void setLocationPreference(const std::deque& locations, int preferenceToAdd); void setProtocolPreference(const std::string& protocol, int preferenceToAdd); - static std::deque > - toFileEntry(const std::deque >& metalinkEntries); + static void toFileEntry + (std::deque >& fileEntries, + const std::deque >& metalinkEntries); }; } // namespace aria2 diff --git a/src/MetalinkHelper.cc b/src/MetalinkHelper.cc index 79c58604..9123480b 100644 --- a/src/MetalinkHelper.cc +++ b/src/MetalinkHelper.cc @@ -50,35 +50,37 @@ MetalinkHelper::MetalinkHelper() {} MetalinkHelper::~MetalinkHelper() {} -std::deque > -MetalinkHelper::parseAndQuery(const std::string& filename, const Option* option) +void MetalinkHelper::parseAndQuery +(std::deque >& result, + const std::string& filename, const Option* option) { SharedHandle proc = MetalinkProcessorFactory::newInstance(); SharedHandle metalinker = proc->parseFile(filename); - return query(metalinker, option); + query(result, metalinker, option); } -std::deque > -MetalinkHelper::parseAndQuery(const SharedHandle& binaryStream, const Option* option) +void MetalinkHelper::parseAndQuery +(std::deque >& result, + const SharedHandle& binaryStream, const Option* option) { SharedHandle proc = MetalinkProcessorFactory::newInstance(); SharedHandle metalinker = proc->parseFromBinaryStream(binaryStream); - return query(metalinker, option); + query(result, metalinker, option); } -std::deque > -MetalinkHelper::query(const SharedHandle& metalinker, const Option* option) +void MetalinkHelper::query +(std::deque >& result, + const SharedHandle& metalinker, const Option* option) { if(metalinker->entries.empty()) { throw DlAbortEx("No file entry found. Probably, the metalink file is not configured properly or broken."); } - std::deque > entries = - metalinker->queryEntry(option->get(PREF_METALINK_VERSION), - option->get(PREF_METALINK_LANGUAGE), - option->get(PREF_METALINK_OS)); - return entries; + metalinker->queryEntry(result, + option->get(PREF_METALINK_VERSION), + option->get(PREF_METALINK_LANGUAGE), + option->get(PREF_METALINK_OS)); } } // namespace aria2 diff --git a/src/MetalinkHelper.h b/src/MetalinkHelper.h index 729f4e50..73a77d53 100644 --- a/src/MetalinkHelper.h +++ b/src/MetalinkHelper.h @@ -53,15 +53,18 @@ private: ~MetalinkHelper(); - static std::deque > - query(const SharedHandle& metalinker, const Option* option); + static void query + (std::deque >& result, + const SharedHandle& metalinker, const Option* option); public: - static std::deque > - parseAndQuery(const std::string& filename, const Option* option); + static void parseAndQuery + (std::deque >& result, + const std::string& filename, const Option* option); - static std::deque > - parseAndQuery(const SharedHandle& binaryStream, const Option* option); + static void parseAndQuery + (std::deque >& result, + const SharedHandle& binaryStream, const Option* option); }; } // namespace aria2 diff --git a/src/Metalinker.cc b/src/Metalinker.cc index 6e6ef6ee..371a5b9e 100644 --- a/src/Metalinker.cc +++ b/src/Metalinker.cc @@ -75,17 +75,15 @@ public: } }; -std::deque > -Metalinker::queryEntry(const std::string& version, - const std::string& language, - const std::string& os) const +void Metalinker::queryEntry +(std::deque >& queryResult, + const std::string& version, + const std::string& language, + const std::string& os) const { - std::deque > resultEntries(entries); - resultEntries.erase(std::remove_if(resultEntries.begin(), - resultEntries.end(), - std::not1(EntryQuery(version, language, os))), - resultEntries.end()); - return resultEntries; + std::remove_copy_if(entries.begin(), entries.end(), + std::back_inserter(queryResult), + std::not1(EntryQuery(version, language, os))); } } // namespace aria2 diff --git a/src/Metalinker.h b/src/Metalinker.h index 4ede3cee..7d5414b4 100644 --- a/src/Metalinker.h +++ b/src/Metalinker.h @@ -58,9 +58,11 @@ public: return *this; } - std::deque > - queryEntry(const std::string& version, const std::string& language, - const std::string& os) const; + void queryEntry + (std::deque >& queryResult, + const std::string& version, + const std::string& language, + const std::string& os) const; }; } // namespace aria2 diff --git a/src/main.cc b/src/main.cc index fbd0e5e0..d69f32fe 100644 --- a/src/main.cc +++ b/src/main.cc @@ -400,7 +400,12 @@ int main(int argc, char* argv[]) #ifdef ENABLE_METALINK if(op->defined(PREF_METALINK_FILE)) { if(op->get(PREF_SHOW_FILES) == V_TRUE) { - Util::toStream(std::cout, MetalinkEntry::toFileEntry(MetalinkHelper::parseAndQuery(op->get(PREF_METALINK_FILE), op))); + std::deque > metalinkEntries; + MetalinkHelper::parseAndQuery(metalinkEntries, + op->get(PREF_METALINK_FILE), op); + std::deque > fileEntries; + MetalinkEntry::toFileEntry(fileEntries, metalinkEntries); + Util::toStream(std::cout, fileEntries); } else { returnValue = downloadMetalink(op); } diff --git a/test/MetalinkHelperTest.cc b/test/MetalinkHelperTest.cc index 4e732d64..902e654f 100644 --- a/test/MetalinkHelperTest.cc +++ b/test/MetalinkHelperTest.cc @@ -29,19 +29,19 @@ CPPUNIT_TEST_SUITE_REGISTRATION( MetalinkHelperTest ); void MetalinkHelperTest::testParseAndQuery() { Option option; - std::deque > entries = - MetalinkHelper::parseAndQuery("test.xml", &option); - CPPUNIT_ASSERT_EQUAL((size_t)5, entries.size()); + std::deque > result; + MetalinkHelper::parseAndQuery(result, "test.xml", &option); + CPPUNIT_ASSERT_EQUAL((size_t)5, result.size()); } void MetalinkHelperTest::testParseAndQuery_version() { Option option; option.put(PREF_METALINK_VERSION, "0.5.1"); - std::deque > entries = - MetalinkHelper::parseAndQuery("test.xml", &option); - CPPUNIT_ASSERT_EQUAL((size_t)1, entries.size()); - SharedHandle entry = entries.front(); + std::deque > result; + MetalinkHelper::parseAndQuery(result, "test.xml", &option); + CPPUNIT_ASSERT_EQUAL((size_t)1, result.size()); + SharedHandle entry = result.front(); CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.1.tar.bz2"), entry->getPath()); } diff --git a/test/MetalinkerTest.cc b/test/MetalinkerTest.cc index 49e39d63..06971448 100644 --- a/test/MetalinkerTest.cc +++ b/test/MetalinkerTest.cc @@ -43,27 +43,34 @@ void MetalinkerTest::testQueryEntry() { version = "0.5.1"; language = "ja-JP"; os = "Linux-m68k"; - std::deque > entries = - metalinker->queryEntry(version, language, os); - CPPUNIT_ASSERT_EQUAL((size_t)1, entries.size()); - CPPUNIT_ASSERT_EQUAL(std::string("0.5.1"), entries.at(0)->version); - CPPUNIT_ASSERT_EQUAL(std::string("ja-JP"), entries.at(0)->language); - CPPUNIT_ASSERT_EQUAL(std::string("Linux-m68k"), entries.at(0)->os); - + { + std::deque > result; + metalinker->queryEntry(result, version, language, os); + CPPUNIT_ASSERT_EQUAL((size_t)1, result.size()); + CPPUNIT_ASSERT_EQUAL(std::string("0.5.1"), result.at(0)->version); + CPPUNIT_ASSERT_EQUAL(std::string("ja-JP"), result.at(0)->language); + CPPUNIT_ASSERT_EQUAL(std::string("Linux-m68k"), result.at(0)->os); + } version = "0.6.0"; language = ""; os = ""; - CPPUNIT_ASSERT_EQUAL((size_t)0, - metalinker->queryEntry(version, language, os).size()); + { + std::deque > result; + metalinker->queryEntry(result, version, language, os); + CPPUNIT_ASSERT_EQUAL((size_t)0, result.size()); + } version = "0.5.2"; language = ""; os = ""; - entries = metalinker->queryEntry(version, language, os); - CPPUNIT_ASSERT_EQUAL((size_t)1, entries.size()); - CPPUNIT_ASSERT_EQUAL(std::string("0.5.2"), entries.at(0)->version); - CPPUNIT_ASSERT_EQUAL(std::string("en-US"), entries.at(0)->language); - CPPUNIT_ASSERT_EQUAL(std::string("Linux-x86"), entries.at(0)->os); + { + std::deque > result; + metalinker->queryEntry(result, version, language, os); + CPPUNIT_ASSERT_EQUAL((size_t)1, result.size()); + CPPUNIT_ASSERT_EQUAL(std::string("0.5.2"), result.at(0)->version); + CPPUNIT_ASSERT_EQUAL(std::string("en-US"), result.at(0)->language); + CPPUNIT_ASSERT_EQUAL(std::string("Linux-x86"), result.at(0)->os); + } } } // namespace aria2