]> Sergey Matveev's repositories - btrtrc.git/blobdiff - tracker/client.go
Drop support for go 1.20
[btrtrc.git] / tracker / client.go
index ee444e2b49c2ec5825dc704ebce49fd409ebd2d3..3b7e2aba36b54b6f09c75a43791bf671811a3f3a 100644 (file)
@@ -2,14 +2,19 @@ package tracker
 
 import (
        "context"
+       "net"
        "net/url"
 
+       "github.com/anacrolix/log"
+
        trHttp "github.com/anacrolix/torrent/tracker/http"
        "github.com/anacrolix/torrent/tracker/udp"
+       "github.com/anacrolix/torrent/types/infohash"
 )
 
 type Client interface {
        Announce(context.Context, AnnounceRequest, AnnounceOpt) (AnnounceResponse, error)
+       Scrape(ctx context.Context, ihs []infohash.T) (out udp.ScrapeResponse, err error)
        Close() error
 }
 
@@ -18,7 +23,9 @@ type AnnounceOpt = trHttp.AnnounceOpt
 type NewClientOpts struct {
        Http trHttp.NewClientOpts
        // Overrides the network in the scheme. Probably a legacy thing.
-       UdpNetwork string
+       UdpNetwork   string
+       Logger       log.Logger
+       ListenPacket func(network, addr string) (net.PacketConn, error)
 }
 
 func NewClient(urlStr string, opts NewClientOpts) (Client, error) {
@@ -35,8 +42,10 @@ func NewClient(urlStr string, opts NewClientOpts) (Client, error) {
                        network = opts.UdpNetwork
                }
                cc, err := udp.NewConnClient(udp.NewConnClientOpts{
-                       Network: network,
-                       Host:    _url.Host,
+                       Network:      network,
+                       Host:         _url.Host,
+                       Logger:       opts.Logger,
+                       ListenPacket: opts.ListenPacket,
                })
                if err != nil {
                        return nil, err