github.com/anacrolix/torrent@v1.61.0/metainfo/announcelist.go (about) 1 package metainfo 2 3 import ( 4 "slices" 5 ) 6 7 type AnnounceList [][]string 8 9 func (al AnnounceList) Clone() AnnounceList { 10 return slices.Clone(al) 11 } 12 13 // Whether the AnnounceList should be preferred over a single URL announce. 14 func (al AnnounceList) OverridesAnnounce(announce string) bool { 15 for _, tier := range al { 16 for _, url := range tier { 17 if url != "" || announce == "" { 18 return true 19 } 20 } 21 } 22 return false 23 } 24 25 func (al AnnounceList) DistinctValues() (ret []string) { 26 seen := make(map[string]struct{}) 27 for _, tier := range al { 28 for _, v := range tier { 29 if _, ok := seen[v]; !ok { 30 seen[v] = struct{}{} 31 ret = append(ret, v) 32 } 33 } 34 } 35 return 36 }