MCPcopy Create free account
hub / github.com/ElementsProject/lightning / random_peer

Function random_peer

gossipd/gossipd.c:683–703  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

681}
682
683struct peer *random_peer(struct daemon *daemon,
684 bool (*check_peer)(const struct peer *peer))
685{
686 u64 target = UINT64_MAX;
687 struct peer *best = NULL, *i;
688
689 /* Reservoir sampling */
690 list_for_each(&daemon->peers, i, list) {
691 u64 r;
692
693 if (!check_peer(i))
694 continue;
695
696 r = pseudorand_u64();
697 if (r <= target) {
698 best = i;
699 target = r;
700 }
701 }
702 return best;
703}
704
705/* This is called when lightningd or connectd closes its connection to
706 * us. We simply exit. */

Callers 1

random_seekerFunction · 0.70

Calls 1

pseudorand_u64Function · 0.50

Tested by

no test coverage detected