]> Sergey Matveev's repositories - btrtrc.git/blob - util/types.go
Move compactPeers type to util package
[btrtrc.git] / util / types.go
1 package util
2
3 import (
4         "bitbucket.org/anacrolix/go.torrent/tracker"
5         "github.com/anacrolix/libtorgo/bencode"
6 )
7
8 type CompactPeers []tracker.CompactPeer
9
10 func (me *CompactPeers) UnmarshalBencode(bb []byte) (err error) {
11         var b []byte
12         err = bencode.Unmarshal(bb, &b)
13         if err != nil {
14                 return
15         }
16         err = me.UnmarshalBinary(b)
17         return
18 }
19
20 func (me *CompactPeers) UnmarshalBinary(b []byte) (err error) {
21         for i := 0; i < len(b); i += 6 {
22                 var p tracker.CompactPeer
23                 err = p.UnmarshalBinary([]byte(b[i : i+6]))
24                 if err != nil {
25                         return
26                 }
27                 *me = append(*me, p)
28         }
29         return
30 }