2009-07-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Eliminated duplicated filterBitfield initialization code.
	* src/BitfieldMan.cc
	* src/BitfieldMan.h
pull/1/head
Tatsuhiro Tsujikawa 2009-07-11 10:34:08 +00:00
parent b29fbb9af5
commit 67a23f615a
3 changed files with 19 additions and 14 deletions

View File

@ -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>
Added assert(!req.isNull()) when DlRetryEx is caught(this is

View File

@ -573,11 +573,16 @@ bool BitfieldMan::setFilterBit(size_t index) {
return setBitInternal(filterBitfield, index, true);
}
void BitfieldMan::addFilter(uint64_t offset, uint64_t length) {
void BitfieldMan::ensureFilterBitfield()
{
if(!filterBitfield) {
filterBitfield = new unsigned char[bitfieldLength];
memset(filterBitfield, 0, bitfieldLength);
}
}
void BitfieldMan::addFilter(uint64_t offset, uint64_t length) {
ensureFilterBitfield();
if(length > 0) {
size_t startBlock = offset/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) {
if(!filterBitfield) {
filterBitfield = new unsigned char[bitfieldLength];
memset(filterBitfield, 0, bitfieldLength);
}
ensureFilterBitfield();
if(length > 0) {
size_t startBlock = offset/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)
{
// TODO1.5 Create ensureFilterBitfield() to initialize this
if(!filterBitfield) {
filterBitfield = new unsigned char[bitfieldLength];
memset(filterBitfield, 0, bitfieldLength);
}
ensureFilterBitfield();
if(length > 0 && blocks > 0) {
size_t startBlock = offset/blockLength;
if(blocks <= startBlock) {
@ -627,10 +625,7 @@ void BitfieldMan::addNotFilter(uint64_t offset, uint64_t length)
}
void BitfieldMan::enableFilter() {
if(!filterBitfield) {
filterBitfield = new unsigned char[bitfieldLength];
memset(filterBitfield, 0, bitfieldLength);
}
ensureFilterBitfield();
filterEnabled = true;
updateCache();
}

View File

@ -83,6 +83,10 @@ private:
size_t getEndIndex(size_t index) 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:
// [startIndex, endIndex)
class Range {