mempool: share lock with chain.

This commit is contained in:
Christopher Jeffrey 2017-01-20 15:14:07 -08:00
parent 3fb2150dc4
commit f8c82197a4
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -74,7 +74,7 @@ function Mempool(options) {
this.chain = this.options.chain;
this.fees = this.options.fees;
this.locker = new Lock(true);
this.locker = this.chain.locker;
this.size = 0;
this.totalOrphans = 0;
@ -1479,46 +1479,6 @@ Mempool.prototype.isDoubleSpend = function isDoubleSpend(tx) {
return false;
};
/**
* Get coin viewpoint (no lock).
* @param {TX} tx
* @param {CoinView} view
* @returns {Promise} - Returns {@link CoinView}.
*/
Mempool.prototype.getCoinView = co(function* getCoinView(tx) {
var state = this.chain.state;
var view = new CoinView();
var prevout = tx.getPrevout();
var i, entry, hash, coins;
for (i = 0; i < prevout.length; i++) {
hash = prevout[i];
entry = this.getEntry(hash);
if (entry) {
view.addTX(entry.tx, -1);
continue;
}
coins = yield this.chain.db.getCoins(hash);
if (!coins) {
coins = new Coins();
coins.hash = hash;
view.add(coins);
continue;
}
view.add(coins);
}
if (state !== this.chain.state)
throw new Error('Chain state changed while getting coins.');
return view;
});
/**
* Get coin viewpoint (lock).
* @param {TX} tx
@ -1526,8 +1486,7 @@ Mempool.prototype.getCoinView = co(function* getCoinView(tx) {
* @returns {Promise} - Returns {@link CoinView}.
*/
Mempool.prototype._getCoinView = co(function* getCoinView(tx) {
var state = this.chain.state;
Mempool.prototype.getCoinView = co(function* getCoinView(tx) {
var view = yield this.chain.db.getCoinView(tx);
var items = view.toArray();
var i, coins, entry;
@ -1546,9 +1505,6 @@ Mempool.prototype._getCoinView = co(function* getCoinView(tx) {
view.addTX(entry.tx, -1);
}
if (state !== this.chain.state)
throw new Error('Chain state changed while getting coins.');
return view;
});