mirror of https://github.com/aria2/aria2
2010-03-24 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Simplified code using lastByteMask * src/BitfieldMan.cc * src/PieceStatMan.ccpull/1/head
parent
6301084ea8
commit
8477e463e9
|
@ -1,3 +1,9 @@
|
|||
2010-03-24 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Simplified code using lastByteMask
|
||||
* src/BitfieldMan.cc
|
||||
* src/PieceStatMan.cc
|
||||
|
||||
2010-03-24 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Rewritten lastByteMask
|
||||
|
|
|
@ -368,7 +368,7 @@ size_t BitfieldMan::countFilteredBlockNow() const {
|
|||
|
||||
bool BitfieldMan::setBitInternal(unsigned char* bitfield, size_t index, bool on) {
|
||||
if(blocks <= index) { return false; }
|
||||
unsigned char mask = 128 >> index%8;
|
||||
unsigned char mask = 128 >> (index%8);
|
||||
if(on) {
|
||||
bitfield[index/8] |= mask;
|
||||
} else {
|
||||
|
@ -421,11 +421,7 @@ static bool testAllBitSet
|
|||
return false;
|
||||
}
|
||||
}
|
||||
unsigned char b = ~((128 >> (blocks-1)%8)-1);
|
||||
if(bitfield[length-1] != b) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return bitfield[length-1] == bitfield::lastByteMask(blocks);
|
||||
}
|
||||
|
||||
bool BitfieldMan::isAllBitSet() const
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include <algorithm>
|
||||
|
||||
#include "SimpleRandomizer.h"
|
||||
#include "bitfield.h"
|
||||
|
||||
namespace aria2 {
|
||||
|
||||
|
@ -106,16 +107,12 @@ public:
|
|||
void PieceStatMan::addPieceStats(const unsigned char* bitfield,
|
||||
size_t bitfieldLength)
|
||||
{
|
||||
size_t index = 0;
|
||||
for(size_t bi = 0; bi < bitfieldLength; ++bi) {
|
||||
|
||||
for(size_t i = 0; i < 8; ++i, ++index) {
|
||||
unsigned char mask = 128 >> i;
|
||||
if(bitfield[bi]&mask) {
|
||||
_pieceStats[index]->addCount();
|
||||
}
|
||||
const size_t nbits = _pieceStats.size();
|
||||
assert(nbits <= bitfieldLength*8);
|
||||
for(size_t i = 0; i < nbits; ++i) {
|
||||
if(bitfield::test(bitfield, nbits, i)) {
|
||||
_pieceStats[i]->addCount();
|
||||
}
|
||||
|
||||
}
|
||||
std::sort(_sortedPieceStatIndexes.begin(), _sortedPieceStatIndexes.end(),
|
||||
PieceStatRarer(_pieceStats));
|
||||
|
@ -124,16 +121,12 @@ void PieceStatMan::addPieceStats(const unsigned char* bitfield,
|
|||
void PieceStatMan::subtractPieceStats(const unsigned char* bitfield,
|
||||
size_t bitfieldLength)
|
||||
{
|
||||
size_t index = 0;
|
||||
for(size_t bi = 0; bi < bitfieldLength; ++bi) {
|
||||
|
||||
for(size_t i = 0; i < 8; ++i, ++index) {
|
||||
unsigned char mask = 128 >> i;
|
||||
if(bitfield[bi]&mask) {
|
||||
_pieceStats[index]->subCount();
|
||||
}
|
||||
const size_t nbits = _pieceStats.size();
|
||||
assert(nbits <= bitfieldLength*8);
|
||||
for(size_t i = 0; i < nbits; ++i) {
|
||||
if(bitfield::test(bitfield, nbits, i)) {
|
||||
_pieceStats[i]->subCount();
|
||||
}
|
||||
|
||||
}
|
||||
std::sort(_sortedPieceStatIndexes.begin(), _sortedPieceStatIndexes.end(),
|
||||
PieceStatRarer(_pieceStats));
|
||||
|
@ -143,18 +136,16 @@ void PieceStatMan::updatePieceStats(const unsigned char* newBitfield,
|
|||
size_t newBitfieldLength,
|
||||
const unsigned char* oldBitfield)
|
||||
{
|
||||
size_t index = 0;
|
||||
for(size_t bi = 0; bi < newBitfieldLength; ++bi) {
|
||||
|
||||
for(size_t i = 0; i < 8; ++i, ++index) {
|
||||
unsigned char mask = 128 >> i;
|
||||
if((newBitfield[bi]&mask) && !(oldBitfield[bi]&mask)) {
|
||||
_pieceStats[index]->addCount();
|
||||
} else if(!(newBitfield[bi]&mask) && (oldBitfield[bi]&mask)) {
|
||||
_pieceStats[index]->subCount();
|
||||
}
|
||||
const size_t nbits = _pieceStats.size();
|
||||
assert(nbits <= newBitfieldLength*8);
|
||||
for(size_t i = 0; i < nbits; ++i) {
|
||||
if(bitfield::test(newBitfield, nbits, i) &&
|
||||
!bitfield::test(oldBitfield, nbits, i)) {
|
||||
_pieceStats[i]->addCount();
|
||||
} else if(!bitfield::test(newBitfield, nbits, i) &&
|
||||
bitfield::test(oldBitfield, nbits, i)) {
|
||||
_pieceStats[i]->subCount();
|
||||
}
|
||||
|
||||
}
|
||||
std::sort(_sortedPieceStatIndexes.begin(), _sortedPieceStatIndexes.end(),
|
||||
PieceStatRarer(_pieceStats));
|
||||
|
|
Loading…
Reference in New Issue