"context"
"fmt"
"net"
+ netHttp "net/http"
"net/url"
"sync"
"github.com/anacrolix/log"
- "github.com/anacrolix/torrent/tracker/http"
"github.com/gorilla/websocket"
+ "github.com/pion/datachannel"
"github.com/anacrolix/torrent/tracker"
+ httpTracker "github.com/anacrolix/torrent/tracker/http"
"github.com/anacrolix/torrent/webtorrent"
- "github.com/pion/datachannel"
)
type websocketTrackerStatus struct {
}
type websocketTrackers struct {
- PeerId [20]byte
- Logger log.Logger
- GetAnnounceRequest func(event tracker.AnnounceEvent, infoHash [20]byte) (tracker.AnnounceRequest, error)
- OnConn func(datachannel.ReadWriteCloser, webtorrent.DataChannelContext)
- mu sync.Mutex
- clients map[string]*refCountedWebtorrentTrackerClient
- Proxy http.ProxyFunc
- DialContext func(ctx context.Context, network, addr string) (net.Conn, error)
+ PeerId [20]byte
+ Logger log.Logger
+ GetAnnounceRequest func(event tracker.AnnounceEvent, infoHash [20]byte) (tracker.AnnounceRequest, error)
+ OnConn func(datachannel.ReadWriteCloser, webtorrent.DataChannelContext)
+ mu sync.Mutex
+ clients map[string]*refCountedWebtorrentTrackerClient
+ Proxy httpTracker.ProxyFunc
+ DialContext func(ctx context.Context, network, addr string) (net.Conn, error)
+ WebsocketTrackerHttpHeader func() netHttp.Header
}
func (me *websocketTrackers) Get(url string, infoHash [20]byte) (*webtorrent.TrackerClient, func()) {
Logger: me.Logger.WithText(func(m log.Msg) string {
return fmt.Sprintf("tracker client for %q: %v", url, m)
}),
+ WebsocketTrackerHttpHeader: me.WebsocketTrackerHttpHeader,
},
}
value.TrackerClient.Start(func(err error) {