mirror of
https://github.com/ipfs/kubo.git
synced 2025-06-26 15:42:21 +08:00
feat(dht/message) add PeerRoutingInfo
This commit is contained in:
@ -10,6 +10,11 @@ import (
|
|||||||
|
|
||||||
var log = eventlog.Logger("dht.pb")
|
var log = eventlog.Logger("dht.pb")
|
||||||
|
|
||||||
|
type PeerRoutingInfo struct {
|
||||||
|
peer.PeerInfo
|
||||||
|
inet.Connectedness
|
||||||
|
}
|
||||||
|
|
||||||
// NewMessage constructs a new dht message with given type, key, and level
|
// NewMessage constructs a new dht message with given type, key, and level
|
||||||
func NewMessage(typ Message_MessageType, key string, level int) *Message {
|
func NewMessage(typ Message_MessageType, key string, level int) *Message {
|
||||||
m := &Message{
|
m := &Message{
|
||||||
@ -20,6 +25,20 @@ func NewMessage(typ Message_MessageType, key string, level int) *Message {
|
|||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func peerRoutingInfoToPBPeer(p PeerRoutingInfo) *Message_Peer {
|
||||||
|
pbp := new(Message_Peer)
|
||||||
|
|
||||||
|
pbp.Addrs = make([][]byte, len(p.Addrs))
|
||||||
|
for i, maddr := range p.Addrs {
|
||||||
|
pbp.Addrs[i] = maddr.Bytes() // Bytes, not String. Compressed.
|
||||||
|
}
|
||||||
|
s := string(p.ID)
|
||||||
|
pbp.Id = &s
|
||||||
|
c := ConnectionType(p.Connectedness)
|
||||||
|
pbp.Connection = &c
|
||||||
|
return pbp
|
||||||
|
}
|
||||||
|
|
||||||
func peerInfoToPBPeer(p peer.PeerInfo) *Message_Peer {
|
func peerInfoToPBPeer(p peer.PeerInfo) *Message_Peer {
|
||||||
pbp := new(Message_Peer)
|
pbp := new(Message_Peer)
|
||||||
|
|
||||||
@ -63,6 +82,14 @@ func PeerInfosToPBPeers(n inet.Network, peers []peer.PeerInfo) []*Message_Peer {
|
|||||||
return pbps
|
return pbps
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PeerRoutingInfosToPBPeers(peers []PeerRoutingInfo) []*Message_Peer {
|
||||||
|
pbpeers := make([]*Message_Peer, len(peers))
|
||||||
|
for i, p := range peers {
|
||||||
|
pbpeers[i] = peerRoutingInfoToPBPeer(p)
|
||||||
|
}
|
||||||
|
return pbpeers
|
||||||
|
}
|
||||||
|
|
||||||
// PBPeersToPeerInfos converts given []*Message_Peer into []peer.PeerInfo
|
// PBPeersToPeerInfos converts given []*Message_Peer into []peer.PeerInfo
|
||||||
// Invalid addresses will be silently omitted.
|
// Invalid addresses will be silently omitted.
|
||||||
func PBPeersToPeerInfos(pbps []*Message_Peer) []peer.PeerInfo {
|
func PBPeersToPeerInfos(pbps []*Message_Peer) []peer.PeerInfo {
|
||||||
|
Reference in New Issue
Block a user