Make MiniMinerMempoolEntry fields private

Follow-up from #27021: accessing of fields in MiniMinerMempoolEntry was
done inconsistently. Even though we had a getter, we would directly
write to the fields when we needed to update them.
This commits sets the fields to private and introduces a method for
updating the ancestor information in transactions using the same method
name as used for Mempool Entries.
This commit is contained in:
Murch
2023-06-12 11:09:21 -04:00
parent ac6030e4d8
commit c24851be94
2 changed files with 9 additions and 5 deletions

View File

@@ -169,9 +169,8 @@ void MiniMiner::DeleteAncestorPackage(const std::set<MockEntryMap::iterator, Ite
for (auto& descendant : it->second) { for (auto& descendant : it->second) {
// If these fail, we must be double-deducting. // If these fail, we must be double-deducting.
Assume(descendant->second.GetModFeesWithAncestors() >= anc->second.GetModifiedFee()); Assume(descendant->second.GetModFeesWithAncestors() >= anc->second.GetModifiedFee());
Assume(descendant->second.vsize_with_ancestors >= anc->second.GetTxSize()); Assume(descendant->second.GetSizeWithAncestors() >= anc->second.GetTxSize());
descendant->second.fee_with_ancestors -= anc->second.GetModifiedFee(); descendant->second.UpdateAncestorState(-anc->second.GetTxSize(), -anc->second.GetModifiedFee());
descendant->second.vsize_with_ancestors -= anc->second.GetTxSize();
} }
} }
// Delete these entries. // Delete these entries.

View File

@@ -19,12 +19,13 @@ class MiniMinerMempoolEntry
const CAmount fee_individual; const CAmount fee_individual;
const CTransactionRef tx; const CTransactionRef tx;
const int64_t vsize_individual; const int64_t vsize_individual;
CAmount fee_with_ancestors;
int64_t vsize_with_ancestors;
// This class must be constructed while holding mempool.cs. After construction, the object's // This class must be constructed while holding mempool.cs. After construction, the object's
// methods can be called without holding that lock. // methods can be called without holding that lock.
public: public:
CAmount fee_with_ancestors;
int64_t vsize_with_ancestors;
explicit MiniMinerMempoolEntry(CTxMemPool::txiter entry) : explicit MiniMinerMempoolEntry(CTxMemPool::txiter entry) :
fee_individual{entry->GetModifiedFee()}, fee_individual{entry->GetModifiedFee()},
tx{entry->GetSharedTx()}, tx{entry->GetSharedTx()},
@@ -38,6 +39,10 @@ public:
int64_t GetTxSize() const { return vsize_individual; } int64_t GetTxSize() const { return vsize_individual; }
int64_t GetSizeWithAncestors() const { return vsize_with_ancestors; } int64_t GetSizeWithAncestors() const { return vsize_with_ancestors; }
const CTransaction& GetTx() const LIFETIMEBOUND { return *tx; } const CTransaction& GetTx() const LIFETIMEBOUND { return *tx; }
void UpdateAncestorState(int64_t vsize_change, CAmount fee_change) {
vsize_with_ancestors += vsize_change;
fee_with_ancestors += fee_change;
}
}; };
// Comparator needed for std::set<MockEntryMap::iterator> // Comparator needed for std::set<MockEntryMap::iterator>