package torrent
import (
+ "bitbucket.org/anacrolix/go.torrent/util"
"bufio"
"container/list"
"crypto/rand"
}
type peerExchangeMessage struct {
- Added compactPeers `bencode:"added"`
- AddedFlags []byte `bencode:"added.f"`
- Dropped []tracker.Peer `bencode:"dropped"`
-}
-
-type compactPeers []tracker.CompactPeer
-
-func (me *compactPeers) UnmarshalBencode(bb []byte) (err error) {
- var b []byte
- err = bencode.Unmarshal(bb, &b)
- if err != nil {
- return
- }
- for i := 0; i < len(b); i += 6 {
- var p tracker.CompactPeer
- err = p.UnmarshalBinary([]byte(b[i : i+6]))
- if err != nil {
- return
- }
- *me = append(*me, p)
- }
- return
+ Added util.CompactPeers `bencode:"added"`
+ AddedFlags []byte `bencode:"added.f"`
+ Dropped []tracker.Peer `bencode:"dropped"`
}
func (me *Client) connectionLoop(t *torrent, c *connection) error {
--- /dev/null
+package util
+
+import (
+ "bitbucket.org/anacrolix/go.torrent/tracker"
+ "github.com/anacrolix/libtorgo/bencode"
+)
+
+type CompactPeers []tracker.CompactPeer
+
+func (me *CompactPeers) UnmarshalBencode(bb []byte) (err error) {
+ var b []byte
+ err = bencode.Unmarshal(bb, &b)
+ if err != nil {
+ return
+ }
+ err = me.UnmarshalBinary(b)
+ return
+}
+
+func (me *CompactPeers) UnmarshalBinary(b []byte) (err error) {
+ for i := 0; i < len(b); i += 6 {
+ var p tracker.CompactPeer
+ err = p.UnmarshalBinary([]byte(b[i : i+6]))
+ if err != nil {
+ return
+ }
+ *me = append(*me, p)
+ }
+ return
+}