2
0
mirror of synced 2025-02-24 06:38:14 +00:00

Move compactPeers type to util package

This commit is contained in:
Matt Joiner 2014-07-04 01:41:46 +10:00
parent 17acbb485c
commit 8505a1017e
2 changed files with 34 additions and 22 deletions

View File

@ -16,6 +16,7 @@ Simple example:
package torrent
import (
"bitbucket.org/anacrolix/go.torrent/util"
"bufio"
"container/list"
"crypto/rand"
@ -535,28 +536,9 @@ func (cl *Client) gotMetadataExtensionMsg(payload []byte, t *torrent, c *connect
}
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 {

30
util/types.go Normal file
View File

@ -0,0 +1,30 @@
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
}