]> Sergey Matveev's repositories - btrtrc.git/blob - metainfo/announcelist.go
Drop support for go 1.20
[btrtrc.git] / metainfo / announcelist.go
1 package metainfo
2
3 type AnnounceList [][]string
4
5 func (al AnnounceList) Clone() (ret AnnounceList) {
6         for _, tier := range al {
7                 ret = append(ret, append([]string(nil), tier...))
8         }
9         return
10 }
11
12 // Whether the AnnounceList should be preferred over a single URL announce.
13 func (al AnnounceList) OverridesAnnounce(announce string) bool {
14         for _, tier := range al {
15                 for _, url := range tier {
16                         if url != "" || announce == "" {
17                                 return true
18                         }
19                 }
20         }
21         return false
22 }
23
24 func (al AnnounceList) DistinctValues() (ret []string) {
25         seen := make(map[string]struct{})
26         for _, tier := range al {
27                 for _, v := range tier {
28                         if _, ok := seen[v]; !ok {
29                                 seen[v] = struct{}{}
30                                 ret = append(ret, v)
31                         }
32                 }
33         }
34         return
35 }