add counter for address mempool index
This commit is contained in:
parent
e7895b4b34
commit
3bb3d82aac
@ -275,6 +275,25 @@ AddressService.prototype.transactionHandler = function(txInfo, callback) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AddressService.prototype._updateAddressIndex = function(key, add) {
|
||||||
|
|
||||||
|
var currentValue = this.mempoolAddressIndex[key] || 0;
|
||||||
|
|
||||||
|
if(add) {
|
||||||
|
if (currentValue > 0)
|
||||||
|
this.mempoolAddressIndex[key] = currentValue + 1;
|
||||||
|
else
|
||||||
|
this.mempoolAddressIndex[key] = 1;
|
||||||
|
} else {
|
||||||
|
if (currentValue < 1) {
|
||||||
|
delete this.mempoolAddressIndex[key];
|
||||||
|
} else {
|
||||||
|
this.mempoolAddressIndex[key]--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function will update the mempool address index with the necessary
|
* This function will update the mempool address index with the necessary
|
||||||
* information for further lookups.
|
* information for further lookups.
|
||||||
@ -309,11 +328,7 @@ AddressService.prototype.updateMempoolIndex = function(tx, add, callback) {
|
|||||||
|
|
||||||
var addressIndexKey = encoding.encodeMempoolAddressIndexKey(addressInfo.hashBuffer, addressInfo.hashTypeBuffer);
|
var addressIndexKey = encoding.encodeMempoolAddressIndexKey(addressInfo.hashBuffer, addressInfo.hashTypeBuffer);
|
||||||
|
|
||||||
if(add) {
|
this._updateAddressIndex(addressIndexKey, add);
|
||||||
this.mempoolAddressIndex[addressIndexKey] = true;
|
|
||||||
} else {
|
|
||||||
delete this.mempoolAddressIndex[addressIndexKey];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update output index
|
// Update output index
|
||||||
var outputIndexBuffer = new Buffer(4);
|
var outputIndexBuffer = new Buffer(4);
|
||||||
@ -409,11 +424,7 @@ AddressService.prototype.updateMempoolIndex = function(tx, add, callback) {
|
|||||||
|
|
||||||
var addressIndexKey = encoding.encodeMempoolAddressIndexKey(inputHashBuffer, inputHashType);
|
var addressIndexKey = encoding.encodeMempoolAddressIndexKey(inputHashBuffer, inputHashType);
|
||||||
|
|
||||||
if(add) {
|
this._updateAddressIndex(addressIndexKey, add);
|
||||||
this.mempoolAddressIndex[addressIndexKey] = true;
|
|
||||||
} else {
|
|
||||||
delete this.mempoolAddressIndex[addressIndexKey];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!callback) {
|
if (!callback) {
|
||||||
|
|||||||
@ -9,6 +9,7 @@ var bitcorenode = require('../../../');
|
|||||||
var AddressService = bitcorenode.services.Address;
|
var AddressService = bitcorenode.services.Address;
|
||||||
var blockData = require('../../data/livenet-345003.json');
|
var blockData = require('../../data/livenet-345003.json');
|
||||||
var bitcore = require('bitcore-lib');
|
var bitcore = require('bitcore-lib');
|
||||||
|
var _ = bitcore.deps._;
|
||||||
var memdown = require('memdown');
|
var memdown = require('memdown');
|
||||||
var leveldown = require('leveldown');
|
var leveldown = require('leveldown');
|
||||||
var Networks = bitcore.Networks;
|
var Networks = bitcore.Networks;
|
||||||
@ -1978,6 +1979,7 @@ describe('Address Service', function() {
|
|||||||
callback.should.be.a('function');
|
callback.should.be.a('function');
|
||||||
Object.keys(am.mempoolSpentIndex).length.should.equal(14);
|
Object.keys(am.mempoolSpentIndex).length.should.equal(14);
|
||||||
Object.keys(am.mempoolAddressIndex).length.should.equal(5);
|
Object.keys(am.mempoolAddressIndex).length.should.equal(5);
|
||||||
|
_.values(am.mempoolAddressIndex).should.deep.equal([1,1,12,1,1]);
|
||||||
for (var i = 0; i < operations.length; i++) {
|
for (var i = 0; i < operations.length; i++) {
|
||||||
operations[i].type.should.equal('put');
|
operations[i].type.should.equal('put');
|
||||||
}
|
}
|
||||||
@ -2013,6 +2015,7 @@ describe('Address Service', function() {
|
|||||||
for (var i = 0; i < operations.length; i++) {
|
for (var i = 0; i < operations.length; i++) {
|
||||||
operations[i].type.should.equal('del');
|
operations[i].type.should.equal('del');
|
||||||
}
|
}
|
||||||
|
Object.keys(am.mempoolAddressIndex).length.should.equal(0);
|
||||||
};
|
};
|
||||||
am.updateMempoolIndex(tx, false);
|
am.updateMempoolIndex(tx, false);
|
||||||
});
|
});
|
||||||
@ -2523,7 +2526,7 @@ describe('Address Service', function() {
|
|||||||
|
|
||||||
var hashTypeBuffer = constants.HASH_TYPES_MAP[address.type];
|
var hashTypeBuffer = constants.HASH_TYPES_MAP[address.type];
|
||||||
var addressIndex = encoding.encodeMempoolAddressIndexKey(address.hashBuffer, hashTypeBuffer);
|
var addressIndex = encoding.encodeMempoolAddressIndexKey(address.hashBuffer, hashTypeBuffer);
|
||||||
as.mempoolAddressIndex[addressIndex] = true;
|
as.mempoolAddressIndex[addressIndex] = 1;
|
||||||
|
|
||||||
as._getInputsMempool = sinon.stub().callsArgWith(3, null, mempoolInputs);
|
as._getInputsMempool = sinon.stub().callsArgWith(3, null, mempoolInputs);
|
||||||
as._getOutputsMempool = sinon.stub().callsArgWith(3, null, mempoolOutputs);
|
as._getOutputsMempool = sinon.stub().callsArgWith(3, null, mempoolOutputs);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user