add CWalletTx::GetImmatureCredit() and use it in CWallet::GetImmatureBalance()

This commit is contained in:
Philip Kaufmann 2012-06-18 08:32:33 +02:00
parent 0d5b1d2a3e
commit 966a0e8cc9
2 changed files with 20 additions and 3 deletions

View file

@ -926,9 +926,8 @@ int64 CWallet::GetImmatureBalance() const
LOCK(cs_wallet); LOCK(cs_wallet);
for (map<uint256, CWalletTx>::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it) for (map<uint256, CWalletTx>::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
{ {
const CWalletTx& pcoin = (*it).second; const CWalletTx* pcoin = &(*it).second;
if (pcoin.IsCoinBase() && pcoin.GetBlocksToMaturity() > 0 && pcoin.IsInMainChain()) nTotal += pcoin->GetImmatureCredit();
nTotal += GetCredit(pcoin);
} }
} }
return nTotal; return nTotal;

View file

@ -375,10 +375,12 @@ public:
// memory only // memory only
mutable bool fDebitCached; mutable bool fDebitCached;
mutable bool fCreditCached; mutable bool fCreditCached;
mutable bool fImmatureCreditCached;
mutable bool fAvailableCreditCached; mutable bool fAvailableCreditCached;
mutable bool fChangeCached; mutable bool fChangeCached;
mutable int64 nDebitCached; mutable int64 nDebitCached;
mutable int64 nCreditCached; mutable int64 nCreditCached;
mutable int64 nImmatureCreditCached;
mutable int64 nAvailableCreditCached; mutable int64 nAvailableCreditCached;
mutable int64 nChangeCached; mutable int64 nChangeCached;
@ -416,10 +418,12 @@ public:
vfSpent.clear(); vfSpent.clear();
fDebitCached = false; fDebitCached = false;
fCreditCached = false; fCreditCached = false;
fImmatureCreditCached = false;
fAvailableCreditCached = false; fAvailableCreditCached = false;
fChangeCached = false; fChangeCached = false;
nDebitCached = 0; nDebitCached = 0;
nCreditCached = 0; nCreditCached = 0;
nImmatureCreditCached = 0;
nAvailableCreditCached = 0; nAvailableCreditCached = 0;
nChangeCached = 0; nChangeCached = 0;
nOrderPos = -1; nOrderPos = -1;
@ -563,6 +567,20 @@ public:
return nCreditCached; return nCreditCached;
} }
int64 GetImmatureCredit(bool fUseCache=true) const
{
if (IsCoinBase() && GetBlocksToMaturity() > 0 && IsInMainChain())
{
if (fUseCache && fImmatureCreditCached)
return nImmatureCreditCached;
nImmatureCreditCached = pwallet->GetCredit(*this);
fImmatureCreditCached = true;
return nImmatureCreditCached;
}
return 0;
}
int64 GetAvailableCredit(bool fUseCache=true) const int64 GetAvailableCredit(bool fUseCache=true) const
{ {
// Must wait until coinbase is safely deep enough in the chain before valuing it // Must wait until coinbase is safely deep enough in the chain before valuing it