aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Newbery <john@johnnewbery.com>2021-08-05 14:14:21 +0100
committerJohn Newbery <john@johnnewbery.com>2021-08-19 11:29:54 +0100
commit4d2fa97031a6f31da984d4c2c105447ed692c6ed (patch)
treef4046506c89395ea7310f5910d0edd954b8ab9e9
parent7e6e65918f75211b517fc887f5d90df8edd52ced (diff)
downloadbitcoin-4d2fa97031a6f31da984d4c2c105447ed692c6ed.tar.xz
[addrman] Clean up ctor
Use default initialization and initializer lists, and use range-based for loops for resetting the buckets.
-rw-r--r--src/addrman.cpp23
-rw-r--r--src/addrman.h10
2 files changed, 12 insertions, 21 deletions
diff --git a/src/addrman.cpp b/src/addrman.cpp
index 690ea19c30..edcf97f846 100644
--- a/src/addrman.cpp
+++ b/src/addrman.cpp
@@ -79,28 +79,19 @@ double CAddrInfo::GetChance(int64_t nNow) const
CAddrMan::CAddrMan(bool deterministic, int32_t consistency_check_ratio)
: insecure_rand{deterministic}
+ , nKey{deterministic ? uint256{1} : insecure_rand.rand256()}
, m_consistency_check_ratio{consistency_check_ratio}
{
- std::vector<int>().swap(vRandom);
- nKey = insecure_rand.rand256();
- for (size_t bucket = 0; bucket < ADDRMAN_NEW_BUCKET_COUNT; bucket++) {
- for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
- vvNew[bucket][entry] = -1;
+ for (auto& bucket : vvNew) {
+ for (auto& entry : bucket) {
+ entry = -1;
}
}
- for (size_t bucket = 0; bucket < ADDRMAN_TRIED_BUCKET_COUNT; bucket++) {
- for (size_t entry = 0; entry < ADDRMAN_BUCKET_SIZE; entry++) {
- vvTried[bucket][entry] = -1;
+ for (auto& bucket : vvTried) {
+ for (auto& entry : bucket) {
+ entry = -1;
}
}
-
- nIdCount = 0;
- nTried = 0;
- nNew = 0;
- nLastGood = 1; //Initially at 1 so that "never" is strictly worse.
- mapInfo.clear();
- mapAddr.clear();
- if (deterministic) nKey = uint256{1};
}
CAddrInfo* CAddrMan::Find(const CNetAddr& addr, int* pnId)
diff --git a/src/addrman.h b/src/addrman.h
index 3d49c2583f..e2cb60b061 100644
--- a/src/addrman.h
+++ b/src/addrman.h
@@ -626,7 +626,7 @@ private:
static constexpr uint8_t INCOMPATIBILITY_BASE = 32;
//! last used nId
- int nIdCount GUARDED_BY(cs);
+ int nIdCount GUARDED_BY(cs){0};
//! table with information about all nIds
std::unordered_map<int, CAddrInfo> mapInfo GUARDED_BY(cs);
@@ -640,19 +640,19 @@ private:
mutable std::vector<int> vRandom GUARDED_BY(cs);
// number of "tried" entries
- int nTried GUARDED_BY(cs);
+ int nTried GUARDED_BY(cs){0};
//! list of "tried" buckets
int vvTried[ADDRMAN_TRIED_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE] GUARDED_BY(cs);
//! number of (unique) "new" entries
- int nNew GUARDED_BY(cs);
+ int nNew GUARDED_BY(cs){0};
//! list of "new" buckets
int vvNew[ADDRMAN_NEW_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE] GUARDED_BY(cs);
- //! last time Good was called (memory only)
- int64_t nLastGood GUARDED_BY(cs);
+ //! last time Good was called (memory only). Initially set to 1 so that "never" is strictly worse.
+ int64_t nLastGood GUARDED_BY(cs){1};
//! Holds addrs inserted into tried table that collide with existing entries. Test-before-evict discipline used to resolve these collisions.
std::set<int> m_tried_collisions;