Files
cloudpods/vendor/github.com/anacrolix/dht/misc.go
Qiu Jian 2e587bd6ab glance重构 update 1
Conflicts:
	Gopkg.lock
	pkg/appsrv/appsrv.go
	pkg/cloudcommon/options.go
	pkg/compute/models/hosts.go
	pkg/compute/models/quotas.go
	pkg/compute/service/service.go
	pkg/mcclient/mcclient.go
2018-12-26 22:52:13 +08:00

44 lines
994 B
Go

package dht
import (
"net"
"github.com/anacrolix/dht/krpc"
)
func mustListen(addr string) net.PacketConn {
ret, err := net.ListenPacket("udp", addr)
if err != nil {
panic(err)
}
return ret
}
func addrResolver(addr string) func() ([]Addr, error) {
return func() ([]Addr, error) {
ua, err := net.ResolveUDPAddr("udp", addr)
return []Addr{NewAddr(ua)}, err
}
}
type nodesByDistance struct {
nis []krpc.NodeInfo
target int160
}
func (me nodesByDistance) Len() int { return len(me.nis) }
func (me nodesByDistance) Less(i, j int) bool {
return distance(int160FromByteArray(me.nis[i].ID), me.target).Cmp(distance(int160FromByteArray(me.nis[j].ID), me.target)) < 0
}
func (me *nodesByDistance) Pop() interface{} {
ret := me.nis[len(me.nis)-1]
me.nis = me.nis[:len(me.nis)-1]
return ret
}
func (me *nodesByDistance) Push(x interface{}) {
me.nis = append(me.nis, x.(krpc.NodeInfo))
}
func (me nodesByDistance) Swap(i, j int) {
me.nis[i], me.nis[j] = me.nis[j], me.nis[i]
}