mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-12 11:19:08 -05:00
[mempool] replace update_descendant_state with lambda
These were introduced in commit 5add7a7
, when the codebase was
pre-C++11. They are no longer necessary.
This commit is contained in:
parent
3c5fb9691b
commit
1b348d2725
1 changed files with 9 additions and 39 deletions
|
@ -24,38 +24,6 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
|
|
||||||
// Helpers for modifying CTxMemPool::mapTx, which is a boost multi_index.
|
|
||||||
struct update_descendant_state
|
|
||||||
{
|
|
||||||
update_descendant_state(int64_t _modifySize, CAmount _modifyFee, int64_t _modifyCount) :
|
|
||||||
modifySize(_modifySize), modifyFee(_modifyFee), modifyCount(_modifyCount)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void operator() (CTxMemPoolEntry &e)
|
|
||||||
{ e.UpdateDescendantState(modifySize, modifyFee, modifyCount); }
|
|
||||||
|
|
||||||
private:
|
|
||||||
int64_t modifySize;
|
|
||||||
CAmount modifyFee;
|
|
||||||
int64_t modifyCount;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct update_ancestor_state
|
|
||||||
{
|
|
||||||
update_ancestor_state(int64_t _modifySize, CAmount _modifyFee, int64_t _modifyCount, int64_t _modifySigOpsCost) :
|
|
||||||
modifySize(_modifySize), modifyFee(_modifyFee), modifyCount(_modifyCount), modifySigOpsCost(_modifySigOpsCost)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void operator() (CTxMemPoolEntry &e)
|
|
||||||
{ e.UpdateAncestorState(modifySize, modifyFee, modifyCount, modifySigOpsCost); }
|
|
||||||
|
|
||||||
private:
|
|
||||||
int64_t modifySize;
|
|
||||||
CAmount modifyFee;
|
|
||||||
int64_t modifyCount;
|
|
||||||
int64_t modifySigOpsCost;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool TestLockPointValidity(CChain& active_chain, const LockPoints& lp)
|
bool TestLockPointValidity(CChain& active_chain, const LockPoints& lp)
|
||||||
{
|
{
|
||||||
AssertLockHeld(cs_main);
|
AssertLockHeld(cs_main);
|
||||||
|
@ -146,7 +114,9 @@ void CTxMemPool::UpdateForDescendants(txiter updateIt, cacheMap& cachedDescendan
|
||||||
modifyCount++;
|
modifyCount++;
|
||||||
cachedDescendants[updateIt].insert(mapTx.iterator_to(descendant));
|
cachedDescendants[updateIt].insert(mapTx.iterator_to(descendant));
|
||||||
// Update ancestor state for each descendant
|
// Update ancestor state for each descendant
|
||||||
mapTx.modify(mapTx.iterator_to(descendant), update_ancestor_state(updateIt->GetTxSize(), updateIt->GetModifiedFee(), 1, updateIt->GetSigOpCost()));
|
mapTx.modify(mapTx.iterator_to(descendant), [=](CTxMemPoolEntry& e) {
|
||||||
|
e.UpdateAncestorState(updateIt->GetTxSize(), updateIt->GetModifiedFee(), 1, updateIt->GetSigOpCost());
|
||||||
|
});
|
||||||
// Don't directly remove the transaction here -- doing so would
|
// Don't directly remove the transaction here -- doing so would
|
||||||
// invalidate iterators in cachedDescendants. Mark it for removal
|
// invalidate iterators in cachedDescendants. Mark it for removal
|
||||||
// by inserting into descendants_to_remove.
|
// by inserting into descendants_to_remove.
|
||||||
|
@ -155,7 +125,7 @@ void CTxMemPool::UpdateForDescendants(txiter updateIt, cacheMap& cachedDescendan
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mapTx.modify(updateIt, update_descendant_state(modifySize, modifyFee, modifyCount));
|
mapTx.modify(updateIt, [=](CTxMemPoolEntry& e) { e.UpdateDescendantState(modifySize, modifyFee, modifyCount); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTxMemPool::UpdateTransactionsFromBlock(const std::vector<uint256>& vHashesToUpdate)
|
void CTxMemPool::UpdateTransactionsFromBlock(const std::vector<uint256>& vHashesToUpdate)
|
||||||
|
@ -347,7 +317,7 @@ void CTxMemPool::UpdateAncestorsOf(bool add, txiter it, setEntries &setAncestors
|
||||||
const int64_t updateSize = updateCount * it->GetTxSize();
|
const int64_t updateSize = updateCount * it->GetTxSize();
|
||||||
const CAmount updateFee = updateCount * it->GetModifiedFee();
|
const CAmount updateFee = updateCount * it->GetModifiedFee();
|
||||||
for (txiter ancestorIt : setAncestors) {
|
for (txiter ancestorIt : setAncestors) {
|
||||||
mapTx.modify(ancestorIt, update_descendant_state(updateSize, updateFee, updateCount));
|
mapTx.modify(ancestorIt, [=](CTxMemPoolEntry& e) { e.UpdateDescendantState(updateSize, updateFee, updateCount); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,7 +332,7 @@ void CTxMemPool::UpdateEntryForAncestors(txiter it, const setEntries &setAncesto
|
||||||
updateFee += ancestorIt->GetModifiedFee();
|
updateFee += ancestorIt->GetModifiedFee();
|
||||||
updateSigOpsCost += ancestorIt->GetSigOpCost();
|
updateSigOpsCost += ancestorIt->GetSigOpCost();
|
||||||
}
|
}
|
||||||
mapTx.modify(it, update_ancestor_state(updateSize, updateFee, updateCount, updateSigOpsCost));
|
mapTx.modify(it, [=](CTxMemPoolEntry& e){ e.UpdateAncestorState(updateSize, updateFee, updateCount, updateSigOpsCost); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void CTxMemPool::UpdateChildrenForRemoval(txiter it)
|
void CTxMemPool::UpdateChildrenForRemoval(txiter it)
|
||||||
|
@ -393,7 +363,7 @@ void CTxMemPool::UpdateForRemoveFromMempool(const setEntries &entriesToRemove, b
|
||||||
CAmount modifyFee = -removeIt->GetModifiedFee();
|
CAmount modifyFee = -removeIt->GetModifiedFee();
|
||||||
int modifySigOps = -removeIt->GetSigOpCost();
|
int modifySigOps = -removeIt->GetSigOpCost();
|
||||||
for (txiter dit : setDescendants) {
|
for (txiter dit : setDescendants) {
|
||||||
mapTx.modify(dit, update_ancestor_state(modifySize, modifyFee, -1, modifySigOps));
|
mapTx.modify(dit, [=](CTxMemPoolEntry& e){ e.UpdateAncestorState(modifySize, modifyFee, -1, modifySigOps); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -942,14 +912,14 @@ void CTxMemPool::PrioritiseTransaction(const uint256& hash, const CAmount& nFeeD
|
||||||
std::string dummy;
|
std::string dummy;
|
||||||
CalculateMemPoolAncestors(*it, setAncestors, nNoLimit, nNoLimit, nNoLimit, nNoLimit, dummy, false);
|
CalculateMemPoolAncestors(*it, setAncestors, nNoLimit, nNoLimit, nNoLimit, nNoLimit, dummy, false);
|
||||||
for (txiter ancestorIt : setAncestors) {
|
for (txiter ancestorIt : setAncestors) {
|
||||||
mapTx.modify(ancestorIt, update_descendant_state(0, nFeeDelta, 0));
|
mapTx.modify(ancestorIt, [=](CTxMemPoolEntry& e){ e.UpdateDescendantState(0, nFeeDelta, 0);});
|
||||||
}
|
}
|
||||||
// Now update all descendants' modified fees with ancestors
|
// Now update all descendants' modified fees with ancestors
|
||||||
setEntries setDescendants;
|
setEntries setDescendants;
|
||||||
CalculateDescendants(it, setDescendants);
|
CalculateDescendants(it, setDescendants);
|
||||||
setDescendants.erase(it);
|
setDescendants.erase(it);
|
||||||
for (txiter descendantIt : setDescendants) {
|
for (txiter descendantIt : setDescendants) {
|
||||||
mapTx.modify(descendantIt, update_ancestor_state(0, nFeeDelta, 0, 0));
|
mapTx.modify(descendantIt, [=](CTxMemPoolEntry& e){ e.UpdateAncestorState(0, nFeeDelta, 0, 0); });
|
||||||
}
|
}
|
||||||
++nTransactionsUpdated;
|
++nTransactionsUpdated;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue