2014-08-01 13:21:51 -07:00
|
|
|
package dht
|
|
|
|
|
2014-08-09 22:28:46 -07:00
|
|
|
import (
|
2014-09-09 22:39:42 -07:00
|
|
|
"github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/goprotobuf/proto"
|
2014-08-09 22:28:46 -07:00
|
|
|
peer "github.com/jbenet/go-ipfs/peer"
|
2014-09-16 01:09:34 -07:00
|
|
|
u "github.com/jbenet/go-ipfs/util"
|
2014-08-09 22:28:46 -07:00
|
|
|
)
|
|
|
|
|
2014-09-16 01:09:34 -07:00
|
|
|
func peerToPBPeer(p *peer.Peer) *Message_Peer {
|
2014-09-16 00:52:57 -07:00
|
|
|
pbp := new(Message_Peer)
|
2014-08-19 19:14:52 -07:00
|
|
|
if len(p.Addresses) == 0 || p.Addresses[0] == nil {
|
|
|
|
pbp.Addr = proto.String("")
|
|
|
|
} else {
|
|
|
|
addr, err := p.Addresses[0].String()
|
|
|
|
if err != nil {
|
|
|
|
//Temp: what situations could cause this?
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
pbp.Addr = &addr
|
2014-08-09 22:28:46 -07:00
|
|
|
}
|
|
|
|
pid := string(p.ID)
|
|
|
|
pbp.Id = &pid
|
|
|
|
return pbp
|
2014-08-01 13:21:51 -07:00
|
|
|
}
|
|
|
|
|
2014-09-16 01:09:34 -07:00
|
|
|
func peersToPBPeers(peers []*peer.Peer) []*Message_Peer {
|
|
|
|
pbpeers = make([]*Message_Peer, len(peers))
|
|
|
|
for i, p := range peers {
|
|
|
|
pbpeers[i] = peerToPBPeer(p)
|
|
|
|
}
|
|
|
|
return pbpeers
|
|
|
|
}
|
|
|
|
|
2014-09-16 00:52:57 -07:00
|
|
|
// GetClusterLevel gets and adjusts the cluster level on the message.
|
|
|
|
// a +/- 1 adjustment is needed to distinguish a valid first level (1) and
|
|
|
|
// default "no value" protobuf behavior (0)
|
|
|
|
func (m *Message) GetClusterLevel() int32 {
|
2014-09-16 01:09:34 -07:00
|
|
|
level := m.GetClusterLevelRaw() - 1
|
|
|
|
if level < 0 {
|
|
|
|
u.PErr("handleGetValue: no routing level specified, assuming 0\n")
|
|
|
|
level = 0
|
|
|
|
}
|
|
|
|
return level
|
2014-09-16 00:52:57 -07:00
|
|
|
}
|
2014-08-01 13:21:51 -07:00
|
|
|
|
2014-09-16 00:52:57 -07:00
|
|
|
// SetClusterLevel adjusts and sets the cluster level on the message.
|
|
|
|
// a +/- 1 adjustment is needed to distinguish a valid first level (1) and
|
|
|
|
// default "no value" protobuf behavior (0)
|
|
|
|
func (m *Message) SetClusterLevel(level int32) {
|
|
|
|
m.ClusterLevelRaw = &level
|
2014-08-01 13:21:51 -07:00
|
|
|
}
|