feat(dht/message) add PeerRoutingInfo
Brian Tiger Chow committed
Jan 27, 2015 at 22:57 UTC
35a5fa6f6f00bee166a0998a8928d1d544b9d4f7
1 file changed
+27
routing/dht/pb/message.go
+27
@@ -10,6 +10,11 @@ import (
10
11
var log = eventlog.Logger("dht.pb")
12
13
+type PeerRoutingInfo struct {
14
+ peer.PeerInfo
15
+ inet.Connectedness
16
+}
17
+
18
// NewMessage constructs a new dht message with given type, key, and level
19
func NewMessage(typ Message_MessageType, key string, level int) *Message {
20
m := &Message{
@@ -20,6 +25,20 @@ func NewMessage(typ Message_MessageType, key string, level int) *Message {
25
return m
26
}
27
28
+func peerRoutingInfoToPBPeer(p PeerRoutingInfo) *Message_Peer {
29
+ pbp := new(Message_Peer)
30
+
31
+ pbp.Addrs = make([][]byte, len(p.Addrs))
32
+ for i, maddr := range p.Addrs {
33
+ pbp.Addrs[i] = maddr.Bytes() // Bytes, not String. Compressed.
34
+ }
35
+ s := string(p.ID)
36
+ pbp.Id = &s
37
+ c := ConnectionType(p.Connectedness)
38
+ pbp.Connection = &c
39
+ return pbp
40
+}
41
+
42
func peerInfoToPBPeer(p peer.PeerInfo) *Message_Peer {
43
pbp := new(Message_Peer)
44
@@ -63,6 +82,14 @@ func PeerInfosToPBPeers(n inet.Network, peers []peer.PeerInfo) []*Message_Peer {
82
return pbps
83
}
84
85
+func PeerRoutingInfosToPBPeers(peers []PeerRoutingInfo) []*Message_Peer {
86
+ pbpeers := make([]*Message_Peer, len(peers))
87
+ for i, p := range peers {
88
+ pbpeers[i] = peerRoutingInfoToPBPeer(p)
89
+ }
90
+ return pbpeers
91
+}
92
+
93
// PBPeersToPeerInfos converts given []*Message_Peer into []peer.PeerInfo
94
// Invalid addresses will be silently omitted.
95
func PBPeersToPeerInfos(pbps []*Message_Peer) []peer.PeerInfo {