|
|
@ -2697,7 +2697,7 @@ bool CConnman::ForNode(NodeId id, std::function<bool(CNode* pnode)> func) |
|
|
|
return found != nullptr && func(found); |
|
|
|
return found != nullptr && func(found); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool CConnman::ForEachNode(std::function<bool(CNode* pnode)> func) |
|
|
|
bool CConnman::ForEachNodeContinueIf(std::function<bool(CNode* pnode)> func) |
|
|
|
{ |
|
|
|
{ |
|
|
|
LOCK(cs_vNodes); |
|
|
|
LOCK(cs_vNodes); |
|
|
|
for (auto&& node : vNodes) |
|
|
|
for (auto&& node : vNodes) |
|
|
@ -2706,7 +2706,7 @@ bool CConnman::ForEachNode(std::function<bool(CNode* pnode)> func) |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool CConnman::ForEachNode(std::function<bool(const CNode* pnode)> func) const |
|
|
|
bool CConnman::ForEachNodeContinueIf(std::function<bool(const CNode* pnode)> func) const |
|
|
|
{ |
|
|
|
{ |
|
|
|
LOCK(cs_vNodes); |
|
|
|
LOCK(cs_vNodes); |
|
|
|
for (const auto& node : vNodes) |
|
|
|
for (const auto& node : vNodes) |
|
|
@ -2715,7 +2715,7 @@ bool CConnman::ForEachNode(std::function<bool(const CNode* pnode)> func) const |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool CConnman::ForEachNodeThen(std::function<bool(CNode* pnode)> pre, std::function<void()> post) |
|
|
|
bool CConnman::ForEachNodeContinueIfThen(std::function<bool(CNode* pnode)> pre, std::function<void()> post) |
|
|
|
{ |
|
|
|
{ |
|
|
|
bool ret = true; |
|
|
|
bool ret = true; |
|
|
|
LOCK(cs_vNodes); |
|
|
|
LOCK(cs_vNodes); |
|
|
@ -2728,7 +2728,7 @@ bool CConnman::ForEachNodeThen(std::function<bool(CNode* pnode)> pre, std::funct |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool CConnman::ForEachNodeThen(std::function<bool(const CNode* pnode)> pre, std::function<void()> post) const |
|
|
|
bool CConnman::ForEachNodeContinueIfThen(std::function<bool(const CNode* pnode)> pre, std::function<void()> post) const |
|
|
|
{ |
|
|
|
{ |
|
|
|
bool ret = true; |
|
|
|
bool ret = true; |
|
|
|
LOCK(cs_vNodes); |
|
|
|
LOCK(cs_vNodes); |
|
|
@ -2741,6 +2741,35 @@ bool CConnman::ForEachNodeThen(std::function<bool(const CNode* pnode)> pre, std: |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CConnman::ForEachNode(std::function<void(CNode* pnode)> func) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
LOCK(cs_vNodes); |
|
|
|
|
|
|
|
for (auto&& node : vNodes) |
|
|
|
|
|
|
|
func(node); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CConnman::ForEachNode(std::function<void(const CNode* pnode)> func) const |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
LOCK(cs_vNodes); |
|
|
|
|
|
|
|
for (const auto& node : vNodes) |
|
|
|
|
|
|
|
func(node); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CConnman::ForEachNodeThen(std::function<void(CNode* pnode)> pre, std::function<void()> post) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
LOCK(cs_vNodes); |
|
|
|
|
|
|
|
for (auto&& node : vNodes) |
|
|
|
|
|
|
|
pre(node); |
|
|
|
|
|
|
|
post(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CConnman::ForEachNodeThen(std::function<void(const CNode* pnode)> pre, std::function<void()> post) const |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
LOCK(cs_vNodes); |
|
|
|
|
|
|
|
for (const auto& node : vNodes) |
|
|
|
|
|
|
|
pre(node); |
|
|
|
|
|
|
|
post(); |
|
|
|
|
|
|
|
} |
|
|
|
int64_t PoissonNextSend(int64_t nNow, int average_interval_seconds) { |
|
|
|
int64_t PoissonNextSend(int64_t nNow, int average_interval_seconds) { |
|
|
|
return nNow + (int64_t)(log1p(GetRand(1ULL << 48) * -0.0000000000000035527136788 /* -1/2^48 */) * average_interval_seconds * -1000000.0 + 0.5); |
|
|
|
return nNow + (int64_t)(log1p(GetRand(1ULL << 48) * -0.0000000000000035527136788 /* -1/2^48 */) * average_interval_seconds * -1000000.0 + 0.5); |
|
|
|
} |
|
|
|
} |
|
|
|