aboutsummaryrefslogtreecommitdiff
path: root/tracker/messages.go
diff options
context:
space:
mode:
Diffstat (limited to 'tracker/messages.go')
-rw-r--r--tracker/messages.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/tracker/messages.go b/tracker/messages.go
index 96cc069..3c739e8 100644
--- a/tracker/messages.go
+++ b/tracker/messages.go
@@ -3,6 +3,7 @@ package tracker
import (
"crypto/sha1"
"io/ioutil"
+ "log"
"net"
"net/http"
"time"
@@ -51,6 +52,29 @@ type Response struct {
WarningMessage string `bencode:"warning message"`
}
+func (r *Request) Poll(announce string) chan Peer {
+ c := make(chan Peer)
+ go func() {
+ defer close(c)
+ for {
+ resp, err := r.Send(announce)
+ if err != nil {
+ log.Println(err)
+ return
+ }
+ for _, p := range resp.Peers {
+ c <- p
+ }
+ if resp.Interval == 0 {
+ resp.Interval = DefaultInterval
+ }
+ log.Println("waiting", resp.Interval)
+ time.Sleep(resp.Interval)
+ }
+ }()
+ return c
+}
+
func (r Request) Send(announce string) (Response, error) {
fail := func(err error) (Response, error) {
return Response{}, err