mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 00:04:02 +03:00
FILE / ScuroNeko/mtg
mtglib/internal/dc/addr_set.go
Исходный файл и его история в репозитории.
34 lines
557 B
Go
34 lines
557 B
Go
package dc
|
|
|
|
import "math/rand/v2"
|
|
|
|
type dcAddrSet struct {
|
|
v4 map[int][]Addr
|
|
v6 map[int][]Addr
|
|
}
|
|
|
|
func (d dcAddrSet) getV4(dc int) []Addr {
|
|
if d.v4 == nil {
|
|
return nil
|
|
}
|
|
return d.get(d.v4[dc])
|
|
}
|
|
|
|
func (d dcAddrSet) getV6(dc int) []Addr {
|
|
if d.v6 == nil {
|
|
return nil
|
|
}
|
|
return d.get(d.v6[dc])
|
|
}
|
|
|
|
func (d dcAddrSet) get(addrs []Addr) []Addr {
|
|
otherSet := make([]Addr, 0, len(addrs))
|
|
otherSet = append(otherSet, addrs...)
|
|
|
|
rand.Shuffle(len(otherSet), func(i, j int) {
|
|
otherSet[i], otherSet[j] = otherSet[j], otherSet[i]
|
|
})
|
|
|
|
return otherSet
|
|
}
|