mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
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:
@@ -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.
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user