mirror of https://github.com/aria2/aria2
2009-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Eliminated duplicated filterBitfield initialization code. * src/BitfieldMan.cc * src/BitfieldMan.hpull/1/head
parent
b29fbb9af5
commit
67a23f615a
|
@ -1,3 +1,9 @@
|
||||||
|
2009-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Eliminated duplicated filterBitfield initialization code.
|
||||||
|
* src/BitfieldMan.cc
|
||||||
|
* src/BitfieldMan.h
|
||||||
|
|
||||||
2009-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2009-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Added assert(!req.isNull()) when DlRetryEx is caught(this is
|
Added assert(!req.isNull()) when DlRetryEx is caught(this is
|
||||||
|
|
|
@ -573,11 +573,16 @@ bool BitfieldMan::setFilterBit(size_t index) {
|
||||||
return setBitInternal(filterBitfield, index, true);
|
return setBitInternal(filterBitfield, index, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitfieldMan::addFilter(uint64_t offset, uint64_t length) {
|
void BitfieldMan::ensureFilterBitfield()
|
||||||
|
{
|
||||||
if(!filterBitfield) {
|
if(!filterBitfield) {
|
||||||
filterBitfield = new unsigned char[bitfieldLength];
|
filterBitfield = new unsigned char[bitfieldLength];
|
||||||
memset(filterBitfield, 0, bitfieldLength);
|
memset(filterBitfield, 0, bitfieldLength);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BitfieldMan::addFilter(uint64_t offset, uint64_t length) {
|
||||||
|
ensureFilterBitfield();
|
||||||
if(length > 0) {
|
if(length > 0) {
|
||||||
size_t startBlock = offset/blockLength;
|
size_t startBlock = offset/blockLength;
|
||||||
size_t endBlock = (offset+length-1)/blockLength;
|
size_t endBlock = (offset+length-1)/blockLength;
|
||||||
|
@ -589,10 +594,7 @@ void BitfieldMan::addFilter(uint64_t offset, uint64_t length) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitfieldMan::removeFilter(uint64_t offset, uint64_t length) {
|
void BitfieldMan::removeFilter(uint64_t offset, uint64_t length) {
|
||||||
if(!filterBitfield) {
|
ensureFilterBitfield();
|
||||||
filterBitfield = new unsigned char[bitfieldLength];
|
|
||||||
memset(filterBitfield, 0, bitfieldLength);
|
|
||||||
}
|
|
||||||
if(length > 0) {
|
if(length > 0) {
|
||||||
size_t startBlock = offset/blockLength;
|
size_t startBlock = offset/blockLength;
|
||||||
size_t endBlock = (offset+length-1)/blockLength;
|
size_t endBlock = (offset+length-1)/blockLength;
|
||||||
|
@ -605,11 +607,7 @@ void BitfieldMan::removeFilter(uint64_t offset, uint64_t length) {
|
||||||
|
|
||||||
void BitfieldMan::addNotFilter(uint64_t offset, uint64_t length)
|
void BitfieldMan::addNotFilter(uint64_t offset, uint64_t length)
|
||||||
{
|
{
|
||||||
// TODO1.5 Create ensureFilterBitfield() to initialize this
|
ensureFilterBitfield();
|
||||||
if(!filterBitfield) {
|
|
||||||
filterBitfield = new unsigned char[bitfieldLength];
|
|
||||||
memset(filterBitfield, 0, bitfieldLength);
|
|
||||||
}
|
|
||||||
if(length > 0 && blocks > 0) {
|
if(length > 0 && blocks > 0) {
|
||||||
size_t startBlock = offset/blockLength;
|
size_t startBlock = offset/blockLength;
|
||||||
if(blocks <= startBlock) {
|
if(blocks <= startBlock) {
|
||||||
|
@ -627,10 +625,7 @@ void BitfieldMan::addNotFilter(uint64_t offset, uint64_t length)
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitfieldMan::enableFilter() {
|
void BitfieldMan::enableFilter() {
|
||||||
if(!filterBitfield) {
|
ensureFilterBitfield();
|
||||||
filterBitfield = new unsigned char[bitfieldLength];
|
|
||||||
memset(filterBitfield, 0, bitfieldLength);
|
|
||||||
}
|
|
||||||
filterEnabled = true;
|
filterEnabled = true;
|
||||||
updateCache();
|
updateCache();
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,6 +83,10 @@ private:
|
||||||
size_t getEndIndex(size_t index) const;
|
size_t getEndIndex(size_t index) const;
|
||||||
|
|
||||||
uint64_t getCompletedLength(bool useFilter) const;
|
uint64_t getCompletedLength(bool useFilter) const;
|
||||||
|
|
||||||
|
// If filterBitfield is 0, allocate bitfieldLength bytes to it and
|
||||||
|
// set 0 to all bytes.
|
||||||
|
void ensureFilterBitfield();
|
||||||
public:
|
public:
|
||||||
// [startIndex, endIndex)
|
// [startIndex, endIndex)
|
||||||
class Range {
|
class Range {
|
||||||
|
|
Loading…
Reference in New Issue