mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-04 17:00:52 +02:00
refactor: Mark CAddrMan::GetAddr const
This commit is contained in:
parent
fa02934c8c
commit
fae0c79351
@ -138,7 +138,7 @@ CAddrInfo* CAddrMan::Create(const CAddress& addr, const CNetAddr& addrSource, in
|
|||||||
return &mapInfo[nId];
|
return &mapInfo[nId];
|
||||||
}
|
}
|
||||||
|
|
||||||
void CAddrMan::SwapRandom(unsigned int nRndPos1, unsigned int nRndPos2)
|
void CAddrMan::SwapRandom(unsigned int nRndPos1, unsigned int nRndPos2) const
|
||||||
{
|
{
|
||||||
AssertLockHeld(cs);
|
AssertLockHeld(cs);
|
||||||
|
|
||||||
@ -150,11 +150,13 @@ void CAddrMan::SwapRandom(unsigned int nRndPos1, unsigned int nRndPos2)
|
|||||||
int nId1 = vRandom[nRndPos1];
|
int nId1 = vRandom[nRndPos1];
|
||||||
int nId2 = vRandom[nRndPos2];
|
int nId2 = vRandom[nRndPos2];
|
||||||
|
|
||||||
assert(mapInfo.count(nId1) == 1);
|
const auto it_1{mapInfo.find(nId1)};
|
||||||
assert(mapInfo.count(nId2) == 1);
|
const auto it_2{mapInfo.find(nId2)};
|
||||||
|
assert(it_1 != mapInfo.end());
|
||||||
|
assert(it_2 != mapInfo.end());
|
||||||
|
|
||||||
mapInfo[nId1].nRandomPos = nRndPos2;
|
it_1->second.nRandomPos = nRndPos2;
|
||||||
mapInfo[nId2].nRandomPos = nRndPos1;
|
it_2->second.nRandomPos = nRndPos1;
|
||||||
|
|
||||||
vRandom[nRndPos1] = nId2;
|
vRandom[nRndPos1] = nId2;
|
||||||
vRandom[nRndPos2] = nId1;
|
vRandom[nRndPos2] = nId1;
|
||||||
@ -541,7 +543,7 @@ int CAddrMan::Check_()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void CAddrMan::GetAddr_(std::vector<CAddress>& vAddr, size_t max_addresses, size_t max_pct, std::optional<Network> network)
|
void CAddrMan::GetAddr_(std::vector<CAddress>& vAddr, size_t max_addresses, size_t max_pct, std::optional<Network> network) const
|
||||||
{
|
{
|
||||||
AssertLockHeld(cs);
|
AssertLockHeld(cs);
|
||||||
|
|
||||||
@ -561,9 +563,10 @@ void CAddrMan::GetAddr_(std::vector<CAddress>& vAddr, size_t max_addresses, size
|
|||||||
|
|
||||||
int nRndPos = insecure_rand.randrange(vRandom.size() - n) + n;
|
int nRndPos = insecure_rand.randrange(vRandom.size() - n) + n;
|
||||||
SwapRandom(n, nRndPos);
|
SwapRandom(n, nRndPos);
|
||||||
assert(mapInfo.count(vRandom[n]) == 1);
|
const auto it{mapInfo.find(vRandom[n])};
|
||||||
|
assert(it != mapInfo.end());
|
||||||
|
|
||||||
const CAddrInfo& ai = mapInfo[vRandom[n]];
|
const CAddrInfo& ai{it->second};
|
||||||
|
|
||||||
// Filter by network (optional)
|
// Filter by network (optional)
|
||||||
if (network != std::nullopt && ai.GetNetClass() != network) continue;
|
if (network != std::nullopt && ai.GetNetClass() != network) continue;
|
||||||
|
@ -55,7 +55,7 @@ private:
|
|||||||
bool fInTried{false};
|
bool fInTried{false};
|
||||||
|
|
||||||
//! position in vRandom
|
//! position in vRandom
|
||||||
int nRandomPos{-1};
|
mutable int nRandomPos{-1};
|
||||||
|
|
||||||
friend class CAddrMan;
|
friend class CAddrMan;
|
||||||
|
|
||||||
@ -596,7 +596,7 @@ public:
|
|||||||
* @param[in] max_pct Maximum percentage of addresses to return (0 = all).
|
* @param[in] max_pct Maximum percentage of addresses to return (0 = all).
|
||||||
* @param[in] network Select only addresses of this network (nullopt = all).
|
* @param[in] network Select only addresses of this network (nullopt = all).
|
||||||
*/
|
*/
|
||||||
std::vector<CAddress> GetAddr(size_t max_addresses, size_t max_pct, std::optional<Network> network)
|
std::vector<CAddress> GetAddr(size_t max_addresses, size_t max_pct, std::optional<Network> network) const
|
||||||
EXCLUSIVE_LOCKS_REQUIRED(!cs)
|
EXCLUSIVE_LOCKS_REQUIRED(!cs)
|
||||||
{
|
{
|
||||||
LOCK(cs);
|
LOCK(cs);
|
||||||
@ -669,7 +669,9 @@ private:
|
|||||||
std::unordered_map<CNetAddr, int, CNetAddrHash> mapAddr GUARDED_BY(cs);
|
std::unordered_map<CNetAddr, int, CNetAddrHash> mapAddr GUARDED_BY(cs);
|
||||||
|
|
||||||
//! randomly-ordered vector of all nIds
|
//! randomly-ordered vector of all nIds
|
||||||
std::vector<int> vRandom GUARDED_BY(cs);
|
//! This is mutable because it is unobservable outside the class, so any
|
||||||
|
//! changes to it (even in const methods) are also unobservable.
|
||||||
|
mutable std::vector<int> vRandom GUARDED_BY(cs);
|
||||||
|
|
||||||
// number of "tried" entries
|
// number of "tried" entries
|
||||||
int nTried GUARDED_BY(cs);
|
int nTried GUARDED_BY(cs);
|
||||||
@ -697,7 +699,7 @@ private:
|
|||||||
CAddrInfo* Create(const CAddress &addr, const CNetAddr &addrSource, int *pnId = nullptr) EXCLUSIVE_LOCKS_REQUIRED(cs);
|
CAddrInfo* Create(const CAddress &addr, const CNetAddr &addrSource, int *pnId = nullptr) EXCLUSIVE_LOCKS_REQUIRED(cs);
|
||||||
|
|
||||||
//! Swap two elements in vRandom.
|
//! Swap two elements in vRandom.
|
||||||
void SwapRandom(unsigned int nRandomPos1, unsigned int nRandomPos2) EXCLUSIVE_LOCKS_REQUIRED(cs);
|
void SwapRandom(unsigned int nRandomPos1, unsigned int nRandomPos2) const EXCLUSIVE_LOCKS_REQUIRED(cs);
|
||||||
|
|
||||||
//! Move an entry from the "new" table(s) to the "tried" table
|
//! Move an entry from the "new" table(s) to the "tried" table
|
||||||
void MakeTried(CAddrInfo& info, int nId) EXCLUSIVE_LOCKS_REQUIRED(cs);
|
void MakeTried(CAddrInfo& info, int nId) EXCLUSIVE_LOCKS_REQUIRED(cs);
|
||||||
@ -752,7 +754,7 @@ private:
|
|||||||
* @param[in] max_pct Maximum percentage of addresses to return (0 = all).
|
* @param[in] max_pct Maximum percentage of addresses to return (0 = all).
|
||||||
* @param[in] network Select only addresses of this network (nullopt = all).
|
* @param[in] network Select only addresses of this network (nullopt = all).
|
||||||
*/
|
*/
|
||||||
void GetAddr_(std::vector<CAddress>& vAddr, size_t max_addresses, size_t max_pct, std::optional<Network> network) EXCLUSIVE_LOCKS_REQUIRED(cs);
|
void GetAddr_(std::vector<CAddress>& vAddr, size_t max_addresses, size_t max_pct, std::optional<Network> network) const EXCLUSIVE_LOCKS_REQUIRED(cs);
|
||||||
|
|
||||||
/** We have successfully connected to this peer. Calling this function
|
/** We have successfully connected to this peer. Calling this function
|
||||||
* updates the CAddress's nTime, which is used in our IsTerrible()
|
* updates the CAddress's nTime, which is used in our IsTerrible()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user