Split up and optimize transaction and block inv queues
This commit is contained in:
20
src/net.h
20
src/net.h
@@ -397,7 +397,13 @@ public:
|
||||
|
||||
// inventory based relay
|
||||
CRollingBloomFilter filterInventoryKnown;
|
||||
std::vector<CInv> vInventoryToSend;
|
||||
// Set of transaction ids we still have to announce.
|
||||
// They are sorted by the mempool before relay, so the order is not important.
|
||||
std::set<uint256> setInventoryTxToSend;
|
||||
// List of block ids we still have announce.
|
||||
// There is no final sorting before sending, as they are always sent immediately
|
||||
// and in the order requested.
|
||||
std::vector<uint256> vInventoryBlockToSend;
|
||||
CCriticalSection cs_inventory;
|
||||
std::set<uint256> setAskFor;
|
||||
std::multimap<int64_t, CInv> mapAskFor;
|
||||
@@ -517,11 +523,13 @@ public:
|
||||
|
||||
void PushInventory(const CInv& inv)
|
||||
{
|
||||
{
|
||||
LOCK(cs_inventory);
|
||||
if (inv.type == MSG_TX && filterInventoryKnown.contains(inv.hash))
|
||||
return;
|
||||
vInventoryToSend.push_back(inv);
|
||||
LOCK(cs_inventory);
|
||||
if (inv.type == MSG_TX) {
|
||||
if (!filterInventoryKnown.contains(inv.hash)) {
|
||||
setInventoryTxToSend.insert(inv.hash);
|
||||
}
|
||||
} else if (inv.type == MSG_BLOCK) {
|
||||
vInventoryBlockToSend.push_back(inv.hash);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user