Add CCoinsViewCache::HaveCoinsInCache to check if a tx is cached

This commit is contained in:
Matt Corallo 2015-10-22 15:49:53 -07:00
parent 677aa3d88c
commit 97bf377bd1
2 changed files with 12 additions and 0 deletions

View file

@ -144,6 +144,11 @@ bool CCoinsViewCache::HaveCoins(const uint256 &txid) const {
return (it != cacheCoins.end() && !it->second.coins.vout.empty()); return (it != cacheCoins.end() && !it->second.coins.vout.empty());
} }
bool CCoinsViewCache::HaveCoinsInCache(const uint256 &txid) const {
CCoinsMap::const_iterator it = cacheCoins.find(txid);
return it != cacheCoins.end();
}
uint256 CCoinsViewCache::GetBestBlock() const { uint256 CCoinsViewCache::GetBestBlock() const {
if (hashBlock.IsNull()) if (hashBlock.IsNull())
hashBlock = base->GetBestBlock(); hashBlock = base->GetBestBlock();

View file

@ -405,6 +405,13 @@ public:
void SetBestBlock(const uint256 &hashBlock); void SetBestBlock(const uint256 &hashBlock);
bool BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock); bool BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock);
/**
* Check if we have the given tx already loaded in this cache.
* The semantics are the same as HaveCoins(), but no calls to
* the backing CCoinsView are made.
*/
bool HaveCoinsInCache(const uint256 &txid) const;
/** /**
* Return a pointer to CCoins in the cache, or NULL if not found. This is * Return a pointer to CCoins in the cache, or NULL if not found. This is
* more efficient than GetCoins. Modifications to other cache entries are * more efficient than GetCoins. Modifications to other cache entries are