From 8c04ed13239f5dc81848c5ece004d2a3d1137106 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Wed, 21 Jul 2021 13:09:49 -0700 Subject: [PATCH] feat: add helper functions for working with addr infos (#202) Specifically, move them _here_ from the peerstore. That way packages (like the DHT) that currently directly rely on the peerstore, can just use go-libp2p-core. Moved from https://github.com/libp2p/go-libp2p-peerstore/blob/f7f22569f7d49635953638ffb11915dd3d054cf5/peerstore.go#L79-L93 With some small modifications. --- peer/addrinfo.go | 9 +++++++++ peerstore/helpers.go | 14 ++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 peerstore/helpers.go diff --git a/peer/addrinfo.go b/peer/addrinfo.go index 175b93e4..6c579fc8 100644 --- a/peer/addrinfo.go +++ b/peer/addrinfo.go @@ -106,3 +106,12 @@ func (pi *AddrInfo) Loggable() map[string]interface{} { "addrs": pi.Addrs, } } + +// AddrInfosToIDs extracts the peer IDs from the passed AddrInfos and returns them in-order. +func AddrInfosToIDs(pis []AddrInfo) []ID { + ps := make([]ID, len(pis)) + for i, pi := range pis { + ps[i] = pi.ID + } + return ps +} diff --git a/peerstore/helpers.go b/peerstore/helpers.go new file mode 100644 index 00000000..e41cf781 --- /dev/null +++ b/peerstore/helpers.go @@ -0,0 +1,14 @@ +package peerstore + +import ( + "github.com/libp2p/go-libp2p-core/peer" +) + +// AddrInfos returns an AddrInfo for each specified peer ID, in-order. +func AddrInfos(ps Peerstore, peers []peer.ID) []peer.AddrInfo { + pi := make([]peer.AddrInfo, len(peers)) + for i, p := range peers { + pi[i] = ps.PeerInfo(p) + } + return pi +}