summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-27 15:14:40 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-27 15:14:40 +0000
commit88656eb14e9694ab7c311517a55e0d9577cbdfd0 (patch)
treee6248d8beb30cf14f854c50c1298d782eba2e29c
parent0c62e907309da29d23b669da91034d00f378bade (diff)
2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use vector instead of deque for MetalinkEntry and MetalinkResource objects. * src/Metalink2RequestGroup.cc * src/Metalink2RequestGroup.h * src/MetalinkEntry.cc * src/MetalinkEntry.h * src/MetalinkHelper.cc * src/MetalinkHelper.h * src/Metalinker.cc * src/Metalinker.h * src/main.cc * test/MetalinkEntryTest.cc * test/MetalinkHelperTest.cc * test/MetalinkProcessorTest.cc * test/MetalinkerTest.cc
-rw-r--r--ChangeLog18
-rw-r--r--src/Metalink2RequestGroup.cc10
-rw-r--r--src/Metalink2RequestGroup.h3
-rw-r--r--src/MetalinkEntry.cc10
-rw-r--r--src/MetalinkEntry.h9
-rw-r--r--src/MetalinkHelper.cc6
-rw-r--r--src/MetalinkHelper.h7
-rw-r--r--src/Metalinker.cc2
-rw-r--r--src/Metalinker.h10
-rw-r--r--src/main.cc4
-rw-r--r--test/MetalinkEntryTest.cc4
-rw-r--r--test/MetalinkHelperTest.cc4
-rw-r--r--test/MetalinkProcessorTest.cc20
-rw-r--r--test/MetalinkerTest.cc10
14 files changed, 72 insertions, 45 deletions
diff --git a/ChangeLog b/ChangeLog
index a88ea3b0..8de1050e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
+ Use vector instead of deque for MetalinkEntry and MetalinkResource
+ objects.
+ * src/Metalink2RequestGroup.cc
+ * src/Metalink2RequestGroup.h
+ * src/MetalinkEntry.cc
+ * src/MetalinkEntry.h
+ * src/MetalinkHelper.cc
+ * src/MetalinkHelper.h
+ * src/Metalinker.cc
+ * src/Metalinker.h
+ * src/main.cc
+ * test/MetalinkEntryTest.cc
+ * test/MetalinkHelperTest.cc
+ * test/MetalinkProcessorTest.cc
+ * test/MetalinkerTest.cc
+
+2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
+
Fixed the bug that grouped FileEntry objects are not used but
instead all FileEntry objects are used for each metaurl group.
* src/Metalink2RequestGroup.cc
diff --git a/src/Metalink2RequestGroup.cc b/src/Metalink2RequestGroup.cc
index 95edd28c..fc3ff427 100644
--- a/src/Metalink2RequestGroup.cc
+++ b/src/Metalink2RequestGroup.cc
@@ -107,7 +107,7 @@ Metalink2RequestGroup::generate(std::deque<SharedHandle<RequestGroup> >& groups,
const std::string& metalinkFile,
const SharedHandle<Option>& option)
{
- std::deque<SharedHandle<MetalinkEntry> > entries;
+ std::vector<SharedHandle<MetalinkEntry> > entries;
MetalinkHelper::parseAndQuery(entries, metalinkFile, option.get());
createRequestGroup(groups, entries, option);
}
@@ -117,7 +117,7 @@ Metalink2RequestGroup::generate(std::deque<SharedHandle<RequestGroup> >& groups,
const SharedHandle<BinaryStream>& binaryStream,
const SharedHandle<Option>& option)
{
- std::deque<SharedHandle<MetalinkEntry> > entries;
+ std::vector<SharedHandle<MetalinkEntry> > entries;
MetalinkHelper::parseAndQuery(entries, binaryStream, option.get());
createRequestGroup(groups, entries, option);
}
@@ -136,7 +136,7 @@ void removeMetalinkContentTypes(const SharedHandle<RequestGroup>& group)
void
Metalink2RequestGroup::createRequestGroup
(std::deque<SharedHandle<RequestGroup> >& groups,
- const std::deque<SharedHandle<MetalinkEntry> >& entries,
+ const std::vector<SharedHandle<MetalinkEntry> >& entries,
const SharedHandle<Option>& option)
{
if(entries.empty()) {
@@ -149,7 +149,7 @@ Metalink2RequestGroup::createRequestGroup
std::vector<SharedHandle<MetalinkEntry> > selectedEntries;
selectedEntries.reserve(entries.size());
- std::deque<std::string> locations;
+ std::vector<std::string> locations;
if(option->defined(PREF_METALINK_LOCATION)) {
util::split(option->get(PREF_METALINK_LOCATION),
std::back_inserter(locations), ",", true);
@@ -162,7 +162,7 @@ Metalink2RequestGroup::createRequestGroup
}
{
int32_t count = 1;
- for(std::deque<SharedHandle<MetalinkEntry> >::const_iterator i =
+ for(std::vector<SharedHandle<MetalinkEntry> >::const_iterator i =
entries.begin(); i != entries.end(); ++i, ++count) {
(*i)->dropUnsupportedResource();
if((*i)->resources.empty() && (*i)->metaurls.empty()) {
diff --git a/src/Metalink2RequestGroup.h b/src/Metalink2RequestGroup.h
index a3d84011..00d2d712 100644
--- a/src/Metalink2RequestGroup.h
+++ b/src/Metalink2RequestGroup.h
@@ -39,6 +39,7 @@
#include "SharedHandle.h"
#include <string>
#include <deque>
+#include <vector>
namespace aria2 {
@@ -54,7 +55,7 @@ private:
void
createRequestGroup(std::deque<SharedHandle<RequestGroup> >& groups,
- const std::deque<SharedHandle<MetalinkEntry> >& entries,
+ const std::vector<SharedHandle<MetalinkEntry> >& entries,
const SharedHandle<Option>& option);
public:
Metalink2RequestGroup();
diff --git a/src/MetalinkEntry.cc b/src/MetalinkEntry.cc
index 75e5dc36..3515e5e6 100644
--- a/src/MetalinkEntry.cc
+++ b/src/MetalinkEntry.cc
@@ -59,11 +59,11 @@ MetalinkEntry::~MetalinkEntry() {}
class AddLocationPriority {
private:
- std::deque<std::string> _locations;
+ std::vector<std::string> _locations;
int _priorityToAdd;
public:
AddLocationPriority
- (const std::deque<std::string>& locations, int priorityToAdd):
+ (const std::vector<std::string>& locations, int priorityToAdd):
_locations(locations), _priorityToAdd(priorityToAdd)
{
std::sort(_locations.begin(), _locations.end());
@@ -105,7 +105,7 @@ uint64_t MetalinkEntry::getLength() const
}
void MetalinkEntry::setLocationPriority
-(const std::deque<std::string>& locations, int priorityToAdd)
+(const std::vector<std::string>& locations, int priorityToAdd)
{
std::for_each(resources.begin(), resources.end(),
AddLocationPriority(locations, priorityToAdd));
@@ -183,8 +183,8 @@ void MetalinkEntry::dropUnsupportedResource() {
}
void MetalinkEntry::toFileEntry
-(std::deque<SharedHandle<FileEntry> >& fileEntries,
- const std::deque<SharedHandle<MetalinkEntry> >& metalinkEntries)
+(std::vector<SharedHandle<FileEntry> >& fileEntries,
+ const std::vector<SharedHandle<MetalinkEntry> >& metalinkEntries)
{
std::transform(metalinkEntries.begin(), metalinkEntries.end(),
std::back_inserter(fileEntries),
diff --git a/src/MetalinkEntry.h b/src/MetalinkEntry.h
index 2fbb6795..5382e15d 100644
--- a/src/MetalinkEntry.h
+++ b/src/MetalinkEntry.h
@@ -38,7 +38,6 @@
#include "common.h"
#include <string>
-#include <deque>
#include <vector>
#include <algorithm>
@@ -63,7 +62,7 @@ public:
std::vector<std::string> oses;
// True if size is specified in Metalink document.
bool sizeKnown;
- std::deque<SharedHandle<MetalinkResource> > resources;
+ std::vector<SharedHandle<MetalinkResource> > resources;
std::vector<SharedHandle<MetalinkMetaurl> > metaurls;
int maxConnections; // Metalink3Spec
#ifdef ENABLE_MESSAGE_DIGEST
@@ -106,13 +105,13 @@ public:
}
void setLocationPriority
- (const std::deque<std::string>& locations, int priorityToAdd);
+ (const std::vector<std::string>& locations, int priorityToAdd);
void setProtocolPriority(const std::string& protocol, int priorityToAdd);
static void toFileEntry
- (std::deque<SharedHandle<FileEntry> >& fileEntries,
- const std::deque<SharedHandle<MetalinkEntry> >& metalinkEntries);
+ (std::vector<SharedHandle<FileEntry> >& fileEntries,
+ const std::vector<SharedHandle<MetalinkEntry> >& metalinkEntries);
void setSignature(const SharedHandle<Signature>& signature);
diff --git a/src/MetalinkHelper.cc b/src/MetalinkHelper.cc
index abfbc99a..0635b3d2 100644
--- a/src/MetalinkHelper.cc
+++ b/src/MetalinkHelper.cc
@@ -50,7 +50,7 @@ MetalinkHelper::MetalinkHelper() {}
MetalinkHelper::~MetalinkHelper() {}
void MetalinkHelper::parseAndQuery
-(std::deque<SharedHandle<MetalinkEntry> >& result,
+(std::vector<SharedHandle<MetalinkEntry> >& result,
const std::string& filename, const Option* option)
{
MetalinkProcessor proc;
@@ -59,7 +59,7 @@ void MetalinkHelper::parseAndQuery
}
void MetalinkHelper::parseAndQuery
-(std::deque<SharedHandle<MetalinkEntry> >& result,
+(std::vector<SharedHandle<MetalinkEntry> >& result,
const SharedHandle<BinaryStream>& binaryStream, const Option* option)
{
MetalinkProcessor proc;
@@ -68,7 +68,7 @@ void MetalinkHelper::parseAndQuery
}
void MetalinkHelper::query
-(std::deque<SharedHandle<MetalinkEntry> >& result,
+(std::vector<SharedHandle<MetalinkEntry> >& result,
const SharedHandle<Metalinker>& metalinker, const Option* option)
{
if(metalinker->entries.empty()) {
diff --git a/src/MetalinkHelper.h b/src/MetalinkHelper.h
index 10586fc5..955f985b 100644
--- a/src/MetalinkHelper.h
+++ b/src/MetalinkHelper.h
@@ -38,7 +38,6 @@
#include "common.h"
#include <string>
-#include <deque>
#include <vector>
#include "SharedHandle.h"
@@ -57,16 +56,16 @@ private:
~MetalinkHelper();
static void query
- (std::deque<SharedHandle<MetalinkEntry> >& result,
+ (std::vector<SharedHandle<MetalinkEntry> >& result,
const SharedHandle<Metalinker>& metalinker, const Option* option);
public:
static void parseAndQuery
- (std::deque<SharedHandle<MetalinkEntry> >& result,
+ (std::vector<SharedHandle<MetalinkEntry> >& result,
const std::string& filename, const Option* option);
static void parseAndQuery
- (std::deque<SharedHandle<MetalinkEntry> >& result,
+ (std::vector<SharedHandle<MetalinkEntry> >& result,
const SharedHandle<BinaryStream>& binaryStream, const Option* option);
static void groupEntryByMetaurlName
diff --git a/src/Metalinker.cc b/src/Metalinker.cc
index 521fe3fe..1b88ba80 100644
--- a/src/Metalinker.cc
+++ b/src/Metalinker.cc
@@ -76,7 +76,7 @@ public:
};
void Metalinker::queryEntry
-(std::deque<SharedHandle<MetalinkEntry> >& queryResult,
+(std::vector<SharedHandle<MetalinkEntry> >& queryResult,
const std::string& version,
const std::string& language,
const std::string& os) const
diff --git a/src/Metalinker.h b/src/Metalinker.h
index 9ef348ab..9a834ab2 100644
--- a/src/Metalinker.h
+++ b/src/Metalinker.h
@@ -36,9 +36,11 @@
#define _D_METALINKER_H_
#include "common.h"
-#include "SharedHandle.h"
+
#include <string>
-#include <deque>
+#include <vector>
+
+#include "SharedHandle.h"
namespace aria2 {
@@ -46,7 +48,7 @@ class MetalinkEntry;
class Metalinker {
public:
- std::deque<SharedHandle<MetalinkEntry> > entries;
+ std::vector<SharedHandle<MetalinkEntry> > entries;
public:
Metalinker();
~Metalinker();
@@ -59,7 +61,7 @@ public:
}
void queryEntry
- (std::deque<SharedHandle<MetalinkEntry> >& queryResult,
+ (std::vector<SharedHandle<MetalinkEntry> >& queryResult,
const std::string& version,
const std::string& language,
const std::string& os) const;
diff --git a/src/main.cc b/src/main.cc
index b5d6ecee..03cac9fa 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -121,9 +121,9 @@ static void showTorrentFile(const std::string& uri)
static void showMetalinkFile
(const std::string& uri, const SharedHandle<Option>& op)
{
- std::deque<SharedHandle<MetalinkEntry> > metalinkEntries;
+ std::vector<SharedHandle<MetalinkEntry> > metalinkEntries;
MetalinkHelper::parseAndQuery(metalinkEntries, uri, op.get());
- std::deque<SharedHandle<FileEntry> > fileEntries;
+ std::vector<SharedHandle<FileEntry> > fileEntries;
MetalinkEntry::toFileEntry(fileEntries, metalinkEntries);
util::toStream(fileEntries.begin(), fileEntries.end(), std::cout);
std::cout << std::endl;
diff --git a/test/MetalinkEntryTest.cc b/test/MetalinkEntryTest.cc
index 2074bf82..be4314cb 100644
--- a/test/MetalinkEntryTest.cc
+++ b/test/MetalinkEntryTest.cc
@@ -79,7 +79,7 @@ void MetalinkEntryTest::testDropUnsupportedResource() {
CPPUNIT_ASSERT_EQUAL((size_t)2, entry->resources.size());
#endif // ENABLE_MESSAGE_DIGEST
- std::deque<SharedHandle<MetalinkResource> >::const_iterator itr =
+ std::vector<SharedHandle<MetalinkResource> >::const_iterator itr =
entry->resources.begin();
CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP,
(*itr++)->type);
@@ -113,7 +113,7 @@ void MetalinkEntryTest::testSetLocationPriority()
const char* locationsSrc[] = { "jp", "al", "ro" };
- std::deque<std::string> locations(&locationsSrc[0], &locationsSrc[3]);
+ std::vector<std::string> locations(&locationsSrc[0], &locationsSrc[3]);
entry->setLocationPriority(locations, -100);
diff --git a/test/MetalinkHelperTest.cc b/test/MetalinkHelperTest.cc
index 3886ac9b..e6f7a840 100644
--- a/test/MetalinkHelperTest.cc
+++ b/test/MetalinkHelperTest.cc
@@ -30,7 +30,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION( MetalinkHelperTest );
void MetalinkHelperTest::testParseAndQuery()
{
Option option;
- std::deque<SharedHandle<MetalinkEntry> > result;
+ std::vector<SharedHandle<MetalinkEntry> > result;
MetalinkHelper::parseAndQuery(result, "test.xml", &option);
CPPUNIT_ASSERT_EQUAL((size_t)5, result.size());
}
@@ -39,7 +39,7 @@ void MetalinkHelperTest::testParseAndQuery_version()
{
Option option;
option.put(PREF_METALINK_VERSION, "0.5.1");
- std::deque<SharedHandle<MetalinkEntry> > result;
+ std::vector<SharedHandle<MetalinkEntry> > result;
MetalinkHelper::parseAndQuery(result, "test.xml", &option);
CPPUNIT_ASSERT_EQUAL((size_t)1, result.size());
SharedHandle<MetalinkEntry> entry = result.front();
diff --git a/test/MetalinkProcessorTest.cc b/test/MetalinkProcessorTest.cc
index 9821bc80..b5ef067e 100644
--- a/test/MetalinkProcessorTest.cc
+++ b/test/MetalinkProcessorTest.cc
@@ -147,7 +147,7 @@ void MetalinkProcessorTest::testParseFileV4_attrs()
MetalinkProcessor proc;
SharedHandle<Metalinker> m = proc.parseFile("metalink4-attrs.xml");
CPPUNIT_ASSERT_EQUAL((size_t)1, m->entries.size());
- std::deque<SharedHandle<MetalinkResource> > resources =
+ std::vector<SharedHandle<MetalinkResource> > resources =
m->entries[0]->resources;
CPPUNIT_ASSERT_EQUAL((size_t)3, resources.size());
CPPUNIT_ASSERT_EQUAL(999999, resources[0]->priority);
@@ -172,7 +172,8 @@ void MetalinkProcessorTest::testParseFile()
try {
SharedHandle<Metalinker> metalinker = proc.parseFile("test.xml");
- std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = metalinker->entries.begin();
+ std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr =
+ metalinker->entries.begin();
SharedHandle<MetalinkEntry> entry1 = *entryItr;
CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), entry1->getPath());
@@ -202,7 +203,8 @@ void MetalinkProcessorTest::testParseFile()
"-----END PGP SIGNATURE-----"),
entry1->getSignature()->getBody());
- std::deque<SharedHandle<MetalinkResource> >::iterator resourceItr1 = entry1->resources.begin();
+ std::vector<SharedHandle<MetalinkResource> >::iterator resourceItr1 =
+ entry1->resources.begin();
SharedHandle<MetalinkResource> resource1 = *resourceItr1;
CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, resource1->type);
CPPUNIT_ASSERT_EQUAL(std::string("jp"), resource1->location);
@@ -294,7 +296,8 @@ void MetalinkProcessorTest::testParseFromBinaryStream()
try {
SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw);
- std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin();
+ std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr =
+ m->entries.begin();
SharedHandle<MetalinkEntry> entry1 = *entryItr;
CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), entry1->getPath());
} catch(Exception& e) {
@@ -348,7 +351,8 @@ void MetalinkProcessorTest::testBadSize()
try {
SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw);
- std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin();
+ std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr =
+ m->entries.begin();
SharedHandle<MetalinkEntry> e = *entryItr;
CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), e->getPath());
CPPUNIT_ASSERT_EQUAL((uint64_t)0ULL, e->getLength());
@@ -380,7 +384,8 @@ void MetalinkProcessorTest::testBadMaxConn()
try {
SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw);
- std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin();
+ std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr =
+ m->entries.begin();
SharedHandle<MetalinkEntry> e = *entryItr;
CPPUNIT_ASSERT_EQUAL((uint64_t)43743838ULL, e->getLength());
} catch(Exception& e) {
@@ -412,7 +417,8 @@ void MetalinkProcessorTest::testNoName()
try {
SharedHandle<Metalinker> m = proc.parseFromBinaryStream(dw);
CPPUNIT_ASSERT_EQUAL((size_t)1, m->entries.size());
- std::deque<SharedHandle<MetalinkEntry> >::iterator entryItr = m->entries.begin();
+ std::vector<SharedHandle<MetalinkEntry> >::iterator entryItr =
+ m->entries.begin();
SharedHandle<MetalinkEntry> e = *entryItr;
CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2"), e->getPath());
} catch(Exception& e) {
diff --git a/test/MetalinkerTest.cc b/test/MetalinkerTest.cc
index 7a46e307..fcb82cc6 100644
--- a/test/MetalinkerTest.cc
+++ b/test/MetalinkerTest.cc
@@ -1,7 +1,9 @@
#include "Metalinker.h"
-#include "MetalinkEntry.h"
+
#include <cppunit/extensions/HelperMacros.h>
+#include "MetalinkEntry.h"
+
namespace aria2 {
class MetalinkerTest:public CppUnit::TestFixture {
@@ -44,7 +46,7 @@ void MetalinkerTest::testQueryEntry() {
language = "ja-JP";
os = "Linux-m68k";
{
- std::deque<SharedHandle<MetalinkEntry> > result;
+ std::vector<SharedHandle<MetalinkEntry> > 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);
@@ -55,7 +57,7 @@ void MetalinkerTest::testQueryEntry() {
language = "";
os = "";
{
- std::deque<SharedHandle<MetalinkEntry> > result;
+ std::vector<SharedHandle<MetalinkEntry> > result;
metalinker->queryEntry(result, version, language, os);
CPPUNIT_ASSERT_EQUAL((size_t)0, result.size());
}
@@ -64,7 +66,7 @@ void MetalinkerTest::testQueryEntry() {
language = "";
os = "";
{
- std::deque<SharedHandle<MetalinkEntry> > result;
+ std::vector<SharedHandle<MetalinkEntry> > 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);