bloom: more fixes.
This commit is contained in:
parent
65ab296d2e
commit
9efece17d1
@ -2283,6 +2283,8 @@ Chain.prototype.verifyLocks = co(function* verifyLocks(prev, tx, view, flags) {
|
|||||||
var locks = yield this.getLocks(prev, tx, view, flags);
|
var locks = yield this.getLocks(prev, tx, view, flags);
|
||||||
var medianTime;
|
var medianTime;
|
||||||
|
|
||||||
|
// Also catches case where
|
||||||
|
// height is `-1`. Fall through.
|
||||||
if (locks.height >= prev.height + 1)
|
if (locks.height >= prev.height + 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|||||||
@ -27,7 +27,7 @@ var LN2 = 0.6931471805599453094172321214581765680755001343602552;
|
|||||||
* Bloom Filter
|
* Bloom Filter
|
||||||
* @exports Bloom
|
* @exports Bloom
|
||||||
* @constructor
|
* @constructor
|
||||||
* @param {Number|Bufer} size - Filter size in bits, or filter itself.
|
* @param {Number|Buffer} bits - Filter size in bits, or filter itself.
|
||||||
* @param {Number} n - Number of hash functions.
|
* @param {Number} n - Number of hash functions.
|
||||||
* @param {Number} tweak - Seed value.
|
* @param {Number} tweak - Seed value.
|
||||||
* @param {Number|String} - Update type.
|
* @param {Number|String} - Update type.
|
||||||
@ -38,9 +38,9 @@ var LN2 = 0.6931471805599453094172321214581765680755001343602552;
|
|||||||
* @property {Number} update - Update flag (see {@link Bloom.flags}).
|
* @property {Number} update - Update flag (see {@link Bloom.flags}).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function Bloom(size, n, tweak, update) {
|
function Bloom(bits, n, tweak, update) {
|
||||||
if (!(this instanceof Bloom))
|
if (!(this instanceof Bloom))
|
||||||
return new Bloom(size, n, tweak, update);
|
return new Bloom(bits, n, tweak, update);
|
||||||
|
|
||||||
this.filter = DUMMY;
|
this.filter = DUMMY;
|
||||||
this.size = 0;
|
this.size = 0;
|
||||||
@ -48,8 +48,8 @@ function Bloom(size, n, tweak, update) {
|
|||||||
this.tweak = 0;
|
this.tweak = 0;
|
||||||
this.update = Bloom.flags.NONE;
|
this.update = Bloom.flags.NONE;
|
||||||
|
|
||||||
if (size != null)
|
if (bits != null)
|
||||||
this.fromOptions(size, n, tweak, update);
|
this.fromOptions(bits, n, tweak, update);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -109,22 +109,23 @@ Bloom.MAX_HASH_FUNCS = 50;
|
|||||||
/**
|
/**
|
||||||
* Inject properties from options.
|
* Inject properties from options.
|
||||||
* @private
|
* @private
|
||||||
* @param {Number|Bufer} size - Filter size in bits, or filter itself.
|
* @param {Number|Buffer} bits - Filter size in bits, or filter itself.
|
||||||
* @param {Number} n - Number of hash functions.
|
* @param {Number} n - Number of hash functions.
|
||||||
* @param {Number} tweak - Seed value.
|
* @param {Number} tweak - Seed value.
|
||||||
* @param {Number|String} - Update type.
|
* @param {Number|String} - Update type.
|
||||||
* @returns {Bloom}
|
* @returns {Bloom}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Bloom.prototype.fromOptions = function fromOptions(size, n, tweak, update) {
|
Bloom.prototype.fromOptions = function fromOptions(bits, n, tweak, update) {
|
||||||
var filter;
|
var filter, size;
|
||||||
|
|
||||||
if (Buffer.isBuffer(size)) {
|
if (Buffer.isBuffer(bits)) {
|
||||||
filter = size;
|
filter = bits;
|
||||||
size = filter.length * 8;
|
size = filter.length * 8;
|
||||||
} else {
|
} else {
|
||||||
assert(typeof size === 'number', '`size` must be a number.');
|
assert(typeof bits === 'number', '`bits` must be a number or Buffer.');
|
||||||
assert(size > 0, '`size` must be greater than zero.');
|
assert(bits > 0, '`bits` must be greater than zero.');
|
||||||
|
size = bits;
|
||||||
size -= size % 8;
|
size -= size % 8;
|
||||||
filter = new Buffer(size / 8);
|
filter = new Buffer(size / 8);
|
||||||
filter.fill(0);
|
filter.fill(0);
|
||||||
@ -157,21 +158,21 @@ Bloom.prototype.fromOptions = function fromOptions(size, n, tweak, update) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiate bloom filter from options.
|
* Instantiate bloom filter from options.
|
||||||
* @param {Number|Bufer} size - Filter size in bits, or filter itself.
|
* @param {Number|Buffer} bits - Filter size in bits, or filter itself.
|
||||||
* @param {Number} n - Number of hash functions.
|
* @param {Number} n - Number of hash functions.
|
||||||
* @param {Number} tweak - Seed value.
|
* @param {Number} tweak - Seed value.
|
||||||
* @param {Number|String} - Update type.
|
* @param {Number|String} - Update type.
|
||||||
* @returns {Bloom}
|
* @returns {Bloom}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Bloom.fromOptions = function fromOptions(size, n, tweak, update) {
|
Bloom.fromOptions = function fromOptions(bits, n, tweak, update) {
|
||||||
return new Bloom().fromOptions(size, n, tweak, update);
|
return new Bloom().fromOptions(bits, n, tweak, update);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform the mumur3 hash on data.
|
* Perform the mumur3 hash on data.
|
||||||
* @param {Buffer} val
|
* @param {Buffer} val
|
||||||
* @param {Number} seed
|
* @param {Number} n
|
||||||
* @returns {Number}
|
* @returns {Number}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -270,7 +271,7 @@ Bloom.fromRate = function fromRate(items, rate, update) {
|
|||||||
if (update !== -1)
|
if (update !== -1)
|
||||||
size = Math.min(size, Bloom.MAX_BLOOM_FILTER_SIZE * 8);
|
size = Math.min(size, Bloom.MAX_BLOOM_FILTER_SIZE * 8);
|
||||||
|
|
||||||
n = Math.max(1, size / items * LN2);
|
n = Math.max(1, (size / items * LN2) | 0);
|
||||||
|
|
||||||
if (update !== -1)
|
if (update !== -1)
|
||||||
n = Math.min(n, Bloom.MAX_HASH_FUNCS);
|
n = Math.min(n, Bloom.MAX_HASH_FUNCS);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user