MCPcopy Create free account
hub / github.com/LUX-Core/lux / ThreadMessageHandler

Function ThreadMessageHandler

src/net.cpp:1668–1732  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1666
1667
1668void ThreadMessageHandler() {
1669 boost::mutex condition_mutex;
1670 boost::unique_lock<boost::mutex> lock(condition_mutex);
1671
1672 SetThreadPriority(THREAD_PRIORITY_BELOW_NORMAL);
1673 while (true) {
1674 vector<CNode*> vNodesCopy;
1675 {
1676 LOCK(cs_vNodes);
1677 vNodesCopy = vNodes;
1678 }
1679
1680 for (CNode* pnode : vNodesCopy) {
1681 if (pnode)
1682 pnode->AddRef();
1683 }
1684#if 0
1685 // Poll the connected nodes for messages
1686 CNode* pnodeTrickle = NULL;
1687 if (!vNodesCopy.empty())
1688 pnodeTrickle = vNodesCopy[GetRand(vNodesCopy.size())];
1689#endif
1690 bool fSleep = true;
1691
1692 for (CNode* pnode : vNodesCopy) {
1693 if (!pnode || pnode->fDisconnect)
1694 continue;
1695
1696 // Receive messages
1697 {
1698 TRY_LOCK(pnode->cs_vRecvMsg, lockRecv);
1699 if (lockRecv) {
1700 if (!g_signals.ProcessMessages(pnode))
1701 pnode->CloseSocketDisconnect();
1702
1703 if (pnode->nSendSize < SendBufferSize()) {
1704 if (!pnode->vRecvGetData.empty() || (!pnode->vRecvMsg.empty() && pnode->vRecvMsg[0].complete())) {
1705 fSleep = false;
1706 }
1707 }
1708 }
1709 }
1710 boost::this_thread::interruption_point();
1711
1712 // Send messages
1713 {
1714 //TRY_LOCK(pnode->cs_vSend, lockSend);
1715 //if (lockSend)
1716 // we do no need to lock here as the lock processing is implemented on
1717 // subfunction of SendMessages
1718 g_signals.SendMessages(pnode);
1719 }
1720 boost::this_thread::interruption_point();
1721 }
1722 {
1723 //LOCK(cs_vNodes);
1724 for (CNode* pnode : vNodesCopy)
1725 if (pnode)

Callers

nothing calls this directly

Calls 10

SetThreadPriorityFunction · 0.85
GetRandFunction · 0.85
SendBufferSizeFunction · 0.85
AddRefMethod · 0.80
CloseSocketDisconnectMethod · 0.80
completeMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45
ReleaseMethod · 0.45
timed_waitMethod · 0.45

Tested by

no test coverage detected