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

Function GetAddedNodeInfo

src/net.cpp:1502–1557  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1500}
1501
1502std::vector<AddedNodeInfo> GetAddedNodeInfo()
1503{
1504 std::vector<AddedNodeInfo> ret;
1505
1506 std::list<std::string> lAddresses(0);
1507 {
1508 LOCK(cs_vAddedNodes);
1509 ret.reserve(vAddedNodes.size());
1510 for (const std::string& strAddNode : vAddedNodes)
1511 lAddresses.push_back(strAddNode);
1512 }
1513
1514
1515 // Build a map of all already connected addresses (by IP:port and by name) to inbound/outbound and resolved CService
1516 std::map<CService, bool> mapConnected;
1517 std::map<std::string, std::pair<bool, CService>> mapConnectedByName;
1518 vector<CNode*> vNodesCopy;
1519 {
1520 LOCK(cs_vNodes);
1521 vNodesCopy = vNodes;
1522 }
1523
1524 for (const CNode* pnode : vNodesCopy) {
1525 if (!pnode) continue;
1526 if (pnode->addr.IsValid()) {
1527 mapConnected[pnode->addr] = pnode->fInbound;
1528 }
1529
1530 if (!pnode->addrName.empty()) {
1531 mapConnectedByName[pnode->addrName] = std::make_pair(pnode->fInbound, static_cast<const CService&>(pnode->addr));
1532 }
1533 }
1534
1535 for (const std::string& strAddNode : lAddresses) {
1536 CService service(strAddNode, Params().GetDefaultPort());
1537 if (service.IsValid()) {
1538 // strAddNode is an IP:port
1539 auto it = mapConnected.find(service);
1540 if (it != mapConnected.end()) {
1541 ret.push_back(AddedNodeInfo{strAddNode, service, true, it->second});
1542 } else {
1543 ret.push_back(AddedNodeInfo{strAddNode, CService(), false, false});
1544 }
1545 } else {
1546 // strAddNode is a name
1547 auto it = mapConnectedByName.find(strAddNode);
1548 if (it != mapConnectedByName.end()) {
1549 ret.push_back(AddedNodeInfo{strAddNode, it->second.second, true, it->second.first});
1550 } else {
1551 ret.push_back(AddedNodeInfo{strAddNode, CService(), false, false});
1552 }
1553 }
1554 }
1555
1556 return ret;
1557}
1558
1559void ThreadOpenAddedConnections()

Callers 2

getaddednodeinfoFunction · 0.85

Calls 10

GetDefaultPortMethod · 0.80
ParamsClass · 0.70
CServiceClass · 0.70
reserveMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45
IsValidMethod · 0.45
emptyMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected