a41f938cec
As we have seen, dependencies version can prevent the build. We should user lock versions on dependencies that we know work: * Packages are vendored * Add Godep support * Added addtional install step in readme * Fix travis build error
50 lignes
770 o
Go
50 lignes
770 o
Go
package dht
|
|
|
|
import "encoding/hex"
|
|
|
|
type nodeID struct {
|
|
_int int160
|
|
set bool
|
|
}
|
|
|
|
func (me *nodeID) SetFromBytes(b []byte) {
|
|
me._int.SetBytes(b)
|
|
me.set = true
|
|
}
|
|
|
|
func (me nodeID) String() string {
|
|
b := me._int.bits[:]
|
|
if len(b) != 20 {
|
|
panic(len(b))
|
|
}
|
|
return hex.EncodeToString(b)
|
|
}
|
|
|
|
func (nid *nodeID) IsSet() bool {
|
|
return nid.set
|
|
}
|
|
|
|
func (me *nodeID) Int160() *int160 {
|
|
if !me.set {
|
|
panic("not set")
|
|
}
|
|
return &me._int
|
|
}
|
|
|
|
func nodeIDFromString(s string) (ret nodeID) {
|
|
ret.SetFromBytes([]byte(s))
|
|
return
|
|
}
|
|
|
|
func (nid0 *nodeID) Distance(nid1 *nodeID) (ret int160) {
|
|
if nid0.IsSet() != nid1.IsSet() {
|
|
ret.SetMax()
|
|
return
|
|
}
|
|
ret.Xor(&nid0._int, &nid1._int)
|
|
return
|
|
}
|
|
|
|
func (nid nodeID) ByteString() string {
|
|
return string(nid.Int160().Bytes())
|
|
}
|