From 79536ece554306e7f7c5c6b876c3cd7e89a1946a 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. --- core/peer/addrinfo.go | 9 +++++++++ core/peerstore/helpers.go | 14 ++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 core/peerstore/helpers.go diff --git a/core/peer/addrinfo.go b/core/peer/addrinfo.go index 175b93e472..6c579fc8f8 100644 --- a/core/peer/addrinfo.go +++ b/core/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/core/peerstore/helpers.go b/core/peerstore/helpers.go new file mode 100644 index 0000000000..e41cf781fd --- /dev/null +++ b/core/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 +}