mirror of https://github.com/aria2/aria2
2009-12-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Specified defaultSize as an argument for easy testing. * src/util.cc * src/util.h * test/UtilTest.ccpull/1/head
parent
32f25fdef4
commit
58bb1fa266
|
@ -1,3 +1,10 @@
|
||||||
|
2009-12-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Specified defaultSize as an argument for easy testing.
|
||||||
|
* src/util.cc
|
||||||
|
* src/util.h
|
||||||
|
* test/UtilTest.cc
|
||||||
|
|
||||||
2009-12-06 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2009-12-06 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Release 1.7.1
|
Release 1.7.1
|
||||||
|
|
|
@ -575,23 +575,23 @@ static void computeTailPieces
|
||||||
void parsePrioritizePieceRange
|
void parsePrioritizePieceRange
|
||||||
(std::vector<size_t>& result, const std::string& src,
|
(std::vector<size_t>& result, const std::string& src,
|
||||||
const std::vector<SharedHandle<FileEntry> >& fileEntries,
|
const std::vector<SharedHandle<FileEntry> >& fileEntries,
|
||||||
size_t pieceLength)
|
size_t pieceLength,
|
||||||
|
uint64_t defaultSize)
|
||||||
{
|
{
|
||||||
const uint64_t DEFAULT_SIZE = 1024*1024;
|
|
||||||
std::vector<size_t> indexes;
|
std::vector<size_t> indexes;
|
||||||
std::vector<std::string> parts;
|
std::vector<std::string> parts;
|
||||||
split(src, std::back_inserter(parts), ",", true);
|
split(src, std::back_inserter(parts), ",", true);
|
||||||
for(std::vector<std::string>::const_iterator i = parts.begin();
|
for(std::vector<std::string>::const_iterator i = parts.begin();
|
||||||
i != parts.end(); ++i) {
|
i != parts.end(); ++i) {
|
||||||
if((*i) == "head") {
|
if((*i) == "head") {
|
||||||
computeHeadPieces(indexes, fileEntries, pieceLength, DEFAULT_SIZE);
|
computeHeadPieces(indexes, fileEntries, pieceLength, defaultSize);
|
||||||
} else if(util::startsWith(*i, "head=")) {
|
} else if(util::startsWith(*i, "head=")) {
|
||||||
std::string sizestr = std::string((*i).begin()+(*i).find("=")+1,
|
std::string sizestr = std::string((*i).begin()+(*i).find("=")+1,
|
||||||
(*i).end());
|
(*i).end());
|
||||||
computeHeadPieces(indexes, fileEntries, pieceLength,
|
computeHeadPieces(indexes, fileEntries, pieceLength,
|
||||||
std::max((int64_t)0, getRealSize(sizestr)));
|
std::max((int64_t)0, getRealSize(sizestr)));
|
||||||
} else if((*i) == "tail") {
|
} else if((*i) == "tail") {
|
||||||
computeTailPieces(indexes, fileEntries, pieceLength, DEFAULT_SIZE);
|
computeTailPieces(indexes, fileEntries, pieceLength, defaultSize);
|
||||||
} else if(util::startsWith(*i, "tail=")) {
|
} else if(util::startsWith(*i, "tail=")) {
|
||||||
std::string sizestr = std::string((*i).begin()+(*i).find("=")+1,
|
std::string sizestr = std::string((*i).begin()+(*i).find("=")+1,
|
||||||
(*i).end());
|
(*i).end());
|
||||||
|
|
|
@ -203,12 +203,14 @@ IntSequence parseIntRange(const std::string& src);
|
||||||
// parameter, SIZE. For example, if "head=SIZE" is specified, pieces
|
// parameter, SIZE. For example, if "head=SIZE" is specified, pieces
|
||||||
// in the range of first SIZE bytes of each file get higher
|
// in the range of first SIZE bytes of each file get higher
|
||||||
// priority. SIZE can include K or M(1K = 1024, 1M = 1024K).
|
// priority. SIZE can include K or M(1K = 1024, 1M = 1024K).
|
||||||
|
// If SIZE is omitted, SIZE=defaultSize is used.
|
||||||
//
|
//
|
||||||
// sample: head=512K,tail=512K
|
// sample: head=512K,tail=512K
|
||||||
void parsePrioritizePieceRange
|
void parsePrioritizePieceRange
|
||||||
(std::vector<size_t>& result, const std::string& src,
|
(std::vector<size_t>& result, const std::string& src,
|
||||||
const std::vector<SharedHandle<FileEntry> >& fileEntries,
|
const std::vector<SharedHandle<FileEntry> >& fileEntries,
|
||||||
size_t pieceLength);
|
size_t pieceLength,
|
||||||
|
uint64_t defaultSize = 1048576 /* 1MiB */);
|
||||||
|
|
||||||
// this function temporarily put here
|
// this function temporarily put here
|
||||||
std::string getContentDispositionFilename(const std::string& header);
|
std::string getContentDispositionFilename(const std::string& header);
|
||||||
|
|
|
@ -861,6 +861,13 @@ void UtilTest::testParsePrioritizePieceRange()
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)4, result[3]);
|
CPPUNIT_ASSERT_EQUAL((size_t)4, result[3]);
|
||||||
result.clear();
|
result.clear();
|
||||||
|
util::parsePrioritizePieceRange(result, "head", entries, pieceLength, 1024);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)4, result.size());
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)0, result[0]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)1, result[1]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)4, result[3]);
|
||||||
|
result.clear();
|
||||||
util::parsePrioritizePieceRange(result, "tail=1K", entries, pieceLength);
|
util::parsePrioritizePieceRange(result, "tail=1K", entries, pieceLength);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)4, result.size());
|
CPPUNIT_ASSERT_EQUAL((size_t)4, result.size());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)0, result[0]);
|
CPPUNIT_ASSERT_EQUAL((size_t)0, result[0]);
|
||||||
|
@ -868,6 +875,13 @@ void UtilTest::testParsePrioritizePieceRange()
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)6, result[3]);
|
CPPUNIT_ASSERT_EQUAL((size_t)6, result[3]);
|
||||||
result.clear();
|
result.clear();
|
||||||
|
util::parsePrioritizePieceRange(result, "tail", entries, pieceLength, 1024);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)4, result.size());
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)0, result[0]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)2, result[1]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)6, result[3]);
|
||||||
|
result.clear();
|
||||||
util::parsePrioritizePieceRange(result, "head=1,tail=1", entries, pieceLength);
|
util::parsePrioritizePieceRange(result, "head=1,tail=1", entries, pieceLength);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)4, result.size());
|
CPPUNIT_ASSERT_EQUAL((size_t)4, result.size());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)0, result[0]);
|
CPPUNIT_ASSERT_EQUAL((size_t)0, result[0]);
|
||||||
|
@ -875,7 +889,8 @@ void UtilTest::testParsePrioritizePieceRange()
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
CPPUNIT_ASSERT_EQUAL((size_t)3, result[2]);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)6, result[3]);
|
CPPUNIT_ASSERT_EQUAL((size_t)6, result[3]);
|
||||||
result.clear();
|
result.clear();
|
||||||
util::parsePrioritizePieceRange(result, "head,tail", entries, pieceLength);
|
util::parsePrioritizePieceRange(result, "head=300M,tail=300M",
|
||||||
|
entries, pieceLength);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)7, result.size());
|
CPPUNIT_ASSERT_EQUAL((size_t)7, result.size());
|
||||||
for(size_t i = 0; i < 7; ++i) {
|
for(size_t i = 0; i < 7; ++i) {
|
||||||
CPPUNIT_ASSERT_EQUAL(i, result[i]);
|
CPPUNIT_ASSERT_EQUAL(i, result[i]);
|
||||||
|
|
Loading…
Reference in New Issue