mirror of https://github.com/aria2/aria2
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.ccpull/1/head
parent
0c62e90730
commit
88656eb14e
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
|||
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
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue