Changeset View
Changeset View
Standalone View
Standalone View
src/txmempool.cpp
Show First 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | void CTxMemPool::UpdateForDescendants(txiter updateIt, | ||||
setEntries stageEntries, setAllDescendants; | setEntries stageEntries, setAllDescendants; | ||||
stageEntries = GetMemPoolChildren(updateIt); | stageEntries = GetMemPoolChildren(updateIt); | ||||
while (!stageEntries.empty()) { | while (!stageEntries.empty()) { | ||||
const txiter cit = *stageEntries.begin(); | const txiter cit = *stageEntries.begin(); | ||||
setAllDescendants.insert(cit); | setAllDescendants.insert(cit); | ||||
stageEntries.erase(cit); | stageEntries.erase(cit); | ||||
const setEntries &setChildren = GetMemPoolChildren(cit); | const setEntries &setChildren = GetMemPoolChildren(cit); | ||||
for (const txiter childEntry : setChildren) { | for (txiter childEntry : setChildren) { | ||||
cacheMap::iterator cacheIt = cachedDescendants.find(childEntry); | cacheMap::iterator cacheIt = cachedDescendants.find(childEntry); | ||||
if (cacheIt != cachedDescendants.end()) { | if (cacheIt != cachedDescendants.end()) { | ||||
// We've already calculated this one, just add the entries for | // We've already calculated this one, just add the entries for | ||||
// this set but don't traverse again. | // this set but don't traverse again. | ||||
for (const txiter cacheEntry : cacheIt->second) { | for (txiter cacheEntry : cacheIt->second) { | ||||
setAllDescendants.insert(cacheEntry); | setAllDescendants.insert(cacheEntry); | ||||
} | } | ||||
} else if (!setAllDescendants.count(childEntry)) { | } else if (!setAllDescendants.count(childEntry)) { | ||||
// Schedule for later processing | // Schedule for later processing | ||||
stageEntries.insert(childEntry); | stageEntries.insert(childEntry); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,295 Lines • Show Last 20 Lines |