feat: add multiaddresses to waku2 peers

This commit is contained in:
Richard Ramos 2022-11-24 11:00:44 -04:00 committed by RichΛrd
parent e83ad01e66
commit a6c7067f3b
7 changed files with 32 additions and 18 deletions

View File

@ -84,8 +84,8 @@ func (w *gethWakuWrapper) SubscribeToConnStatusChanges() (*types.ConnStatusSubsc
} }
// Peers function only added for compatibility with waku V2 // Peers function only added for compatibility with waku V2
func (w *gethWakuWrapper) Peers() map[string][]string { func (w *gethWakuWrapper) Peers() map[string]types.WakuV2Peer {
p := make(map[string][]string) p := make(map[string]types.WakuV2Peer)
return p return p
} }

View File

@ -241,7 +241,7 @@ func (w *gethWakuV2Wrapper) AddRelayPeer(address string) (string, error) {
return w.waku.AddRelayPeer(address) return w.waku.AddRelayPeer(address)
} }
func (w *gethWakuV2Wrapper) Peers() map[string][]string { func (w *gethWakuV2Wrapper) Peers() map[string]types.WakuV2Peer {
return w.waku.Peers() return w.waku.Peers()
} }

View File

@ -13,7 +13,12 @@ import (
type ConnStatus struct { type ConnStatus struct {
IsOnline bool `json:"isOnline"` IsOnline bool `json:"isOnline"`
HasHistory bool `json:"hasHistory"` HasHistory bool `json:"hasHistory"`
Peers map[string][]string `json:"peers"` Peers map[string]WakuV2Peer `json:"peers"`
}
type WakuV2Peer struct {
Protocols []string `json:"protocols"`
Addresses []string `json:"addresses"`
} }
type ConnStatusSubscription struct { type ConnStatusSubscription struct {
@ -71,7 +76,7 @@ type Waku interface {
// PeerCount // PeerCount
PeerCount() int PeerCount() int
Peers() map[string][]string Peers() map[string]WakuV2Peer
StartDiscV5() error StartDiscV5() error

View File

@ -1,5 +1,7 @@
package protocol package protocol
import "github.com/status-im/status-go/eth-node/types"
func (m *Messenger) AddStorePeer(address string) (string, error) { func (m *Messenger) AddStorePeer(address string) (string, error) {
return m.transport.AddStorePeer(address) return m.transport.AddStorePeer(address)
} }
@ -20,6 +22,6 @@ func (m *Messenger) DropPeer(peerID string) error {
return m.transport.DropPeer(peerID) return m.transport.DropPeer(peerID)
} }
func (m *Messenger) Peers() map[string][]string { func (m *Messenger) Peers() map[string]types.WakuV2Peer {
return m.transport.Peers() return m.transport.Peers()
} }

View File

@ -435,7 +435,7 @@ func (t *Transport) PeerCount() int {
return t.waku.PeerCount() return t.waku.PeerCount()
} }
func (t *Transport) Peers() map[string][]string { func (t *Transport) Peers() map[string]types.WakuV2Peer {
return t.waku.Peers() return t.waku.Peers()
} }

View File

@ -1159,7 +1159,7 @@ func (api *PublicAPI) DropPeer(peerID string) error {
return api.service.messenger.DropPeer(peerID) return api.service.messenger.DropPeer(peerID)
} }
func (api *PublicAPI) Peers() map[string][]string { func (api *PublicAPI) Peers() map[string]types.WakuV2Peer {
return api.service.messenger.Peers() return api.service.messenger.Peers()
} }

View File

@ -263,7 +263,7 @@ func New(nodeKey string, cfg *Config, logger *zap.Logger, appDB *sql.DB) (*Waku,
return return
case c := <-connStatusChan: case c := <-connStatusChan:
waku.connStatusMu.Lock() waku.connStatusMu.Lock()
latestConnStatus := formatConnStatus(c) latestConnStatus := formatConnStatus(waku.node, c)
for k, subs := range waku.connStatusSubscriptions { for k, subs := range waku.connStatusSubscriptions {
if subs.Active() { if subs.Active() {
subs.C <- latestConnStatus subs.C <- latestConnStatus
@ -1121,8 +1121,8 @@ func (w *Waku) PeerCount() int {
return w.node.PeerCount() return w.node.PeerCount()
} }
func (w *Waku) Peers() map[string][]string { func (w *Waku) Peers() map[string]types.WakuV2Peer {
return FormatPeerStats(w.node.PeerStats()) return FormatPeerStats(w.node, w.node.PeerStats())
} }
func (w *Waku) StartDiscV5() error { func (w *Waku) StartDiscV5() error {
@ -1231,18 +1231,25 @@ func toDeterministicID(id string, expectedLen int) (string, error) {
return id, nil return id, nil
} }
func FormatPeerStats(peers node.PeerStats) map[string][]string { func FormatPeerStats(wakuNode *node.WakuNode, peers node.PeerStats) map[string]types.WakuV2Peer {
p := make(map[string][]string) p := make(map[string]types.WakuV2Peer)
for k, v := range peers { for k, v := range peers {
p[k.Pretty()] = v peerInfo := wakuNode.Host().Peerstore().PeerInfo(k)
wakuV2Peer := types.WakuV2Peer{}
wakuV2Peer.Protocols = v
hostInfo, _ := multiaddr.NewMultiaddr(fmt.Sprintf("/p2p/%s", k.Pretty()))
for _, addr := range peerInfo.Addrs {
wakuV2Peer.Addresses = append(wakuV2Peer.Addresses, addr.Encapsulate(hostInfo).String())
}
p[k.Pretty()] = wakuV2Peer
} }
return p return p
} }
func formatConnStatus(c node.ConnStatus) types.ConnStatus { func formatConnStatus(wakuNode *node.WakuNode, c node.ConnStatus) types.ConnStatus {
return types.ConnStatus{ return types.ConnStatus{
IsOnline: c.IsOnline, IsOnline: c.IsOnline,
HasHistory: c.HasHistory, HasHistory: c.HasHistory,
Peers: FormatPeerStats(c.Peers), Peers: FormatPeerStats(wakuNode, c.Peers),
} }
} }