Version: v1.0.2 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Sep 30, 2016 License: BSD-2-Clause Imports: 15 Imported by: 0



Package tracker provides a generic interface for manipulating a BitTorrent tracker's fast-moving data.



This section is empty.


This section is empty.


This section is empty.


type Storage

type Storage struct {
	// contains filtered or unexported fields

func NewStorage

func NewStorage(cfg *config.Config) *Storage

func (*Storage) ClientApproved

func (s *Storage) ClientApproved(peerID string) error

func (*Storage) DeleteClient

func (s *Storage) DeleteClient(peerID string)

func (*Storage) DeleteLeecher

func (s *Storage) DeleteLeecher(infohash string, p *models.Peer) error

func (*Storage) DeleteSeeder

func (s *Storage) DeleteSeeder(infohash string, p *models.Peer) error

func (*Storage) DeleteTorrent

func (s *Storage) DeleteTorrent(infohash string)

func (*Storage) FindTorrent

func (s *Storage) FindTorrent(infohash string) (*models.Torrent, error)

func (*Storage) IncrementTorrentSnatches

func (s *Storage) IncrementTorrentSnatches(infohash string) error

func (*Storage) Len

func (s *Storage) Len() int

func (*Storage) PurgeInactivePeers

func (s *Storage) PurgeInactivePeers(purgeEmptyTorrents bool, before time.Time) error

func (*Storage) PurgeInactiveTorrent

func (s *Storage) PurgeInactiveTorrent(infohash string) error

func (*Storage) PutClient

func (s *Storage) PutClient(peerID string)

func (*Storage) PutLeecher

func (s *Storage) PutLeecher(infohash string, p *models.Peer) error

func (*Storage) PutSeeder

func (s *Storage) PutSeeder(infohash string, p *models.Peer) error

func (*Storage) PutTorrent

func (s *Storage) PutTorrent(torrent *models.Torrent)

func (*Storage) TouchTorrent

func (s *Storage) TouchTorrent(infohash string) error

type Torrents

type Torrents struct {
	// contains filtered or unexported fields

type Tracker

type Tracker struct {
	Config *config.Config

	// contains filtered or unexported fields

Tracker represents the logic necessary to service BitTorrent announces, independently of the underlying data transports used.

func New

func New(cfg *config.Config) (*Tracker, error)

New creates a new Tracker, and opens any necessary connections. Maintenance routines are automatically spawned in the background.

func (*Tracker) Close

func (tkr *Tracker) Close() error

Close gracefully shutdowns a Tracker by closing any database connections.

func (*Tracker) HandleAnnounce

func (tkr *Tracker) HandleAnnounce(ann *models.Announce, w Writer) (err error)

HandleAnnounce encapsulates all of the logic of handling a BitTorrent client's Announce without being coupled to any transport protocol.

func (*Tracker) HandleScrape

func (tkr *Tracker) HandleScrape(scrape *models.Scrape, w Writer) (err error)

HandleScrape encapsulates all the logic of handling a BitTorrent client's scrape without being coupled to any transport protocol.

func (*Tracker) LoadApprovedClients

func (tkr *Tracker) LoadApprovedClients(clients []string)

LoadApprovedClients loads a list of client IDs into the tracker's storage.

type Writer

type Writer interface {
	WriteError(err error) error
	WriteAnnounce(*models.AnnounceResponse) error
	WriteScrape(*models.ScrapeResponse) error

Writer serializes a tracker's responses, and is implemented for each response transport used by the tracker. Only one of these may be called per request, and only once.

Note, data passed into any of these functions will not contain sensitive information, so it may be passed back the client freely.


Path Synopsis
Package models implements the common data types used throughout a BitTorrent tracker.
Package models implements the common data types used throughout a BitTorrent tracker.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL