Browse Source

Get rid of CTxMempool::lookup() entirely

0.13
Pieter Wuille 9 years ago
parent
commit
288d85ddf2
  1. 4
      src/main.cpp
  2. 18
      src/test/policyestimator_tests.cpp
  3. 16
      src/txmempool.cpp
  4. 1
      src/txmempool.h

4
src/main.cpp

@ -1445,8 +1445,10 @@ bool GetTransaction(const uint256 &hash, CTransaction &txOut, const Consensus::P
LOCK(cs_main); LOCK(cs_main);
if (mempool.lookup(hash, txOut)) std::shared_ptr<const CTransaction> ptx = mempool.get(hash);
if (ptx)
{ {
txOut = *ptx;
return true; return true;
} }

18
src/test/policyestimator_tests.cpp

@ -74,9 +74,9 @@ BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
// 9/10 blocks add 2nd highest and so on until ... // 9/10 blocks add 2nd highest and so on until ...
// 1/10 blocks add lowest fee/pri transactions // 1/10 blocks add lowest fee/pri transactions
while (txHashes[9-h].size()) { while (txHashes[9-h].size()) {
CTransaction btx; std::shared_ptr<const CTransaction> ptx = mpool.get(txHashes[9-h].back());
if (mpool.lookup(txHashes[9-h].back(), btx)) if (ptx)
block.push_back(btx); block.push_back(*ptx);
txHashes[9-h].pop_back(); txHashes[9-h].pop_back();
} }
} }
@ -160,9 +160,9 @@ BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
// Estimates should still not be below original // Estimates should still not be below original
for (int j = 0; j < 10; j++) { for (int j = 0; j < 10; j++) {
while(txHashes[j].size()) { while(txHashes[j].size()) {
CTransaction btx; std::shared_ptr<const CTransaction> ptx = mpool.get(txHashes[j].back());
if (mpool.lookup(txHashes[j].back(), btx)) if (ptx)
block.push_back(btx); block.push_back(*ptx);
txHashes[j].pop_back(); txHashes[j].pop_back();
} }
} }
@ -181,9 +181,9 @@ BOOST_AUTO_TEST_CASE(BlockPolicyEstimates)
tx.vin[0].prevout.n = 10000*blocknum+100*j+k; tx.vin[0].prevout.n = 10000*blocknum+100*j+k;
uint256 hash = tx.GetHash(); uint256 hash = tx.GetHash();
mpool.addUnchecked(hash, entry.Fee(feeV[k/4][j]).Time(GetTime()).Priority(priV[k/4][j]).Height(blocknum).FromTx(tx, &mpool)); mpool.addUnchecked(hash, entry.Fee(feeV[k/4][j]).Time(GetTime()).Priority(priV[k/4][j]).Height(blocknum).FromTx(tx, &mpool));
CTransaction btx; std::shared_ptr<const CTransaction> ptx = mpool.get(hash);
if (mpool.lookup(hash, btx)) if (ptx)
block.push_back(btx); block.push_back(*ptx);
} }
} }
mpool.removeForBlock(block, ++blocknum, dummyConflicted); mpool.removeForBlock(block, ++blocknum, dummyConflicted);

16
src/txmempool.cpp

@ -831,16 +831,6 @@ std::shared_ptr<const CTransaction> CTxMemPool::get(const uint256& hash) const
return i->GetSharedTx(); return i->GetSharedTx();
} }
bool CTxMemPool::lookup(uint256 hash, CTransaction& result) const
{
auto tx = get(hash);
if (tx) {
result = *tx;
return true;
}
return false;
}
TxMempoolInfo CTxMemPool::info(const uint256& hash) const TxMempoolInfo CTxMemPool::info(const uint256& hash) const
{ {
LOCK(cs); LOCK(cs);
@ -960,9 +950,9 @@ bool CCoinsViewMemPool::GetCoins(const uint256 &txid, CCoins &coins) const {
// If an entry in the mempool exists, always return that one, as it's guaranteed to never // If an entry in the mempool exists, always return that one, as it's guaranteed to never
// conflict with the underlying cache, and it cannot have pruned entries (as it contains full) // conflict with the underlying cache, and it cannot have pruned entries (as it contains full)
// transactions. First checking the underlying cache risks returning a pruned entry instead. // transactions. First checking the underlying cache risks returning a pruned entry instead.
CTransaction tx; shared_ptr<const CTransaction> ptx = mempool.get(txid);
if (mempool.lookup(txid, tx)) { if (ptx) {
coins = CCoins(tx, MEMPOOL_HEIGHT); coins = CCoins(*ptx, MEMPOOL_HEIGHT);
return true; return true;
} }
return (base->GetCoins(txid, coins) && !coins.IsPruned()); return (base->GetCoins(txid, coins) && !coins.IsPruned());

1
src/txmempool.h

@ -607,7 +607,6 @@ public:
return (mapTx.count(hash) != 0); return (mapTx.count(hash) != 0);
} }
bool lookup(uint256 hash, CTransaction& result) const;
std::shared_ptr<const CTransaction> get(const uint256& hash) const; std::shared_ptr<const CTransaction> get(const uint256& hash) const;
TxMempoolInfo info(const uint256& hash) const; TxMempoolInfo info(const uint256& hash) const;
std::vector<TxMempoolInfo> infoAll() const; std::vector<TxMempoolInfo> infoAll() const;

Loading…
Cancel
Save