From 8505a1017e71258ea46a3aad45e8361bc9e92a19 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 4 Jul 2014 01:41:46 +1000 Subject: [PATCH] Move compactPeers type to util package --- client.go | 26 ++++---------------------- util/types.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 22 deletions(-) create mode 100644 util/types.go diff --git a/client.go b/client.go index f7ef9291..349914d5 100644 --- a/client.go +++ b/client.go @@ -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 { diff --git a/util/types.go b/util/types.go new file mode 100644 index 00000000..ec874622 --- /dev/null +++ b/util/types.go @@ -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 +} -- 2.48.1