@@ -161,85 +161,45 @@ class CConnman
161
161
162
162
void PushMessage (CNode* pnode, CSerializedNetMsg&& msg);
163
163
164
- template <typename Callable>
165
- bool ForEachNodeContinueIf (Callable&& func)
166
- {
167
- LOCK (cs_vNodes);
168
- for (auto && node : vNodes)
169
- if (!func (node))
170
- return false ;
171
- return true ;
172
- };
173
-
174
- template <typename Callable>
175
- bool ForEachNodeContinueIf (Callable&& func) const
176
- {
177
- LOCK (cs_vNodes);
178
- for (const auto & node : vNodes)
179
- if (!func (node))
180
- return false ;
181
- return true ;
182
- };
183
-
184
- template <typename Callable, typename CallableAfter>
185
- bool ForEachNodeContinueIfThen (Callable&& pre, CallableAfter&& post)
186
- {
187
- bool ret = true ;
188
- LOCK (cs_vNodes);
189
- for (auto && node : vNodes)
190
- if (!pre (node)) {
191
- ret = false ;
192
- break ;
193
- }
194
- post ();
195
- return ret;
196
- };
197
-
198
- template <typename Callable, typename CallableAfter>
199
- bool ForEachNodeContinueIfThen (Callable&& pre, CallableAfter&& post) const
200
- {
201
- bool ret = true ;
202
- LOCK (cs_vNodes);
203
- for (const auto & node : vNodes)
204
- if (!pre (node)) {
205
- ret = false ;
206
- break ;
207
- }
208
- post ();
209
- return ret;
210
- };
211
-
212
164
template <typename Callable>
213
165
void ForEachNode (Callable&& func)
214
166
{
215
167
LOCK (cs_vNodes);
216
- for (auto && node : vNodes)
217
- func (node);
168
+ for (auto && node : vNodes) {
169
+ if (NodeFullyConnected (node))
170
+ func (node);
171
+ }
218
172
};
219
173
220
174
template <typename Callable>
221
175
void ForEachNode (Callable&& func) const
222
176
{
223
177
LOCK (cs_vNodes);
224
- for (const auto & node : vNodes)
225
- func (node);
178
+ for (auto && node : vNodes) {
179
+ if (NodeFullyConnected (node))
180
+ func (node);
181
+ }
226
182
};
227
183
228
184
template <typename Callable, typename CallableAfter>
229
185
void ForEachNodeThen (Callable&& pre, CallableAfter&& post)
230
186
{
231
187
LOCK (cs_vNodes);
232
- for (auto && node : vNodes)
233
- pre (node);
188
+ for (auto && node : vNodes) {
189
+ if (NodeFullyConnected (node))
190
+ pre (node);
191
+ }
234
192
post ();
235
193
};
236
194
237
195
template <typename Callable, typename CallableAfter>
238
196
void ForEachNodeThen (Callable&& pre, CallableAfter&& post) const
239
197
{
240
198
LOCK (cs_vNodes);
241
- for (const auto & node : vNodes)
242
- pre (node);
199
+ for (auto && node : vNodes) {
200
+ if (NodeFullyConnected (node))
201
+ pre (node);
202
+ }
243
203
post ();
244
204
};
245
205
@@ -372,6 +332,9 @@ class CConnman
372
332
void RecordBytesRecv (uint64_t bytes);
373
333
void RecordBytesSent (uint64_t bytes);
374
334
335
+ // Whether the node should be passed out in ForEach* callbacks
336
+ static bool NodeFullyConnected (const CNode* pnode);
337
+
375
338
// Network usage totals
376
339
CCriticalSection cs_totalBytesRecv;
377
340
CCriticalSection cs_totalBytesSent;
0 commit comments