MCPcopy Create free account
hub / github.com/BTCGPU/BTCGPU / GetAddedNodeInfo

Method GetAddedNodeInfo

src/net.cpp:1905–1957  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1903}
1904
1905std::vector<AddedNodeInfo> CConnman::GetAddedNodeInfo()
1906{
1907 std::vector<AddedNodeInfo> ret;
1908
1909 std::list<std::string> lAddresses(0);
1910 {
1911 LOCK(cs_vAddedNodes);
1912 ret.reserve(vAddedNodes.size());
1913 std::copy(vAddedNodes.cbegin(), vAddedNodes.cend(), std::back_inserter(lAddresses));
1914 }
1915
1916
1917 // Build a map of all already connected addresses (by IP:port and by name) to inbound/outbound and resolved CService
1918 std::map<CService, bool> mapConnected;
1919 std::map<std::string, std::pair<bool, CService>> mapConnectedByName;
1920 {
1921 LOCK(cs_vNodes);
1922 for (const CNode* pnode : vNodes) {
1923 if (pnode->addr.IsValid()) {
1924 mapConnected[pnode->addr] = pnode->fInbound;
1925 }
1926 std::string addrName = pnode->GetAddrName();
1927 if (!addrName.empty()) {
1928 mapConnectedByName[std::move(addrName)] = std::make_pair(pnode->fInbound, static_cast<const CService&>(pnode->addr));
1929 }
1930 }
1931 }
1932
1933 for (const std::string& strAddNode : lAddresses) {
1934 CService service(LookupNumeric(strAddNode.c_str(), Params().GetDefaultPort()));
1935 AddedNodeInfo addedNode{strAddNode, CService(), false, false};
1936 if (service.IsValid()) {
1937 // strAddNode is an IP:port
1938 auto it = mapConnected.find(service);
1939 if (it != mapConnected.end()) {
1940 addedNode.resolvedAddress = service;
1941 addedNode.fConnected = true;
1942 addedNode.fInbound = it->second;
1943 }
1944 } else {
1945 // strAddNode is a name
1946 auto it = mapConnectedByName.find(strAddNode);
1947 if (it != mapConnectedByName.end()) {
1948 addedNode.resolvedAddress = it->second.second;
1949 addedNode.fConnected = true;
1950 addedNode.fInbound = it->second.first;
1951 }
1952 }
1953 ret.emplace_back(std::move(addedNode));
1954 }
1955
1956 return ret;
1957}
1958
1959void CConnman::ThreadOpenAddedConnections()
1960{

Callers 1

getaddednodeinfoFunction · 0.80

Calls 13

LookupNumericFunction · 0.85
cbeginMethod · 0.80
cendMethod · 0.80
GetAddrNameMethod · 0.80
GetDefaultPortMethod · 0.80
ParamsClass · 0.70
CServiceClass · 0.70
reserveMethod · 0.45
sizeMethod · 0.45
IsValidMethod · 0.45
emptyMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected