adjust health percent
This commit is contained in:
parent
ad2a9e6c7f
commit
bb88dd8be3
|
@ -158,7 +158,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
estimateCompletedPercentFromBitField: function (bitfield) {
|
estimateCompletedPercentFromBitField: function (bitfield) {
|
||||||
var totalLength = bitfield.length * 16;
|
var totalLength = bitfield.length * 0xf;
|
||||||
var completedLength = 0;
|
var completedLength = 0;
|
||||||
|
|
||||||
if (totalLength == 0) {
|
if (totalLength == 0) {
|
||||||
|
@ -177,13 +177,21 @@
|
||||||
return task.completePercent;
|
return task.completePercent;
|
||||||
}
|
}
|
||||||
|
|
||||||
var bitfieldArr = new Array(task.bitfield.length);
|
var bitfieldCompletedArr = new Array(task.bitfield.length);
|
||||||
var totalLength = task.bitfield.length * 16;
|
var bitfieldPieceArr = new Array(task.bitfield.length);
|
||||||
|
var totalLength = task.bitfield.length * 0xf;
|
||||||
var healthBitCount = 0;
|
var healthBitCount = 0;
|
||||||
|
|
||||||
for (var i = 0; i < task.bitfield.length; i++) {
|
for (var i = 0; i < task.bitfield.length; i++) {
|
||||||
var num = parseInt(task.bitfield[i], 16);
|
var num = parseInt(task.bitfield[i], 16);
|
||||||
bitfieldArr[i] = num;
|
bitfieldCompletedArr[i] = 0;
|
||||||
|
bitfieldPieceArr[i] = 0;
|
||||||
|
|
||||||
|
if (num == 0xf) {
|
||||||
|
bitfieldCompletedArr[i] = num;
|
||||||
|
} else {
|
||||||
|
bitfieldPieceArr[i] = num;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < peers.length; i++) {
|
for (var i = 0; i < peers.length; i++) {
|
||||||
|
@ -192,20 +200,29 @@
|
||||||
|
|
||||||
for (var j = 0; j < bitfield.length; j++) {
|
for (var j = 0; j < bitfield.length; j++) {
|
||||||
var num = parseInt(bitfield[j], 16);
|
var num = parseInt(bitfield[j], 16);
|
||||||
bitfieldArr[j] += num;
|
|
||||||
|
if (num == 0xf) {
|
||||||
|
bitfieldCompletedArr[j] += num;
|
||||||
|
} else {
|
||||||
|
bitfieldPieceArr[j] = Math.max(bitfieldPieceArr[j], num);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < bitfieldCompletedArr.length; i++) {
|
||||||
|
bitfieldCompletedArr[i] += bitfieldPieceArr[i];
|
||||||
|
}
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
var completed = true;
|
var completed = true;
|
||||||
|
|
||||||
for (var i = 0; i < bitfieldArr.length; i++) {
|
for (var i = 0; i < bitfieldCompletedArr.length; i++) {
|
||||||
if (bitfieldArr[i] > 16) {
|
if (bitfieldCompletedArr[i] > 0xf) {
|
||||||
healthBitCount += 16;
|
healthBitCount += 0xf;
|
||||||
bitfieldArr[i] -= 16;
|
bitfieldCompletedArr[i] -= 0xf;
|
||||||
} else {
|
} else {
|
||||||
healthBitCount += bitfieldArr[i];
|
healthBitCount += bitfieldCompletedArr[i];
|
||||||
bitfieldArr[i] = 0;
|
bitfieldCompletedArr[i] = 0;
|
||||||
completed = false;
|
completed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -215,7 +232,13 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return healthBitCount / totalLength * 100;
|
var healthPercent = healthBitCount / totalLength * 100;
|
||||||
|
|
||||||
|
if (healthPercent < task.completePercent) {
|
||||||
|
healthPercent = task.completePercent;
|
||||||
|
}
|
||||||
|
|
||||||
|
return healthPercent;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}]);
|
}]);
|
||||||
|
|
Reference in a new issue