libgorrent

package
v0.0.0-...-5c6312b Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2022 License: GPL-3.0 Imports: 23 Imported by: 1

Documentation

Index

Constants

View Source
const (
	FlagNone      BitmapFlags = 0
	FlagRequested             = 1
	FlagCompleted             = 2
)

TODO

Variables

This section is empty.

Functions

This section is empty.

Types

type BitmapFlags

type BitmapFlags int8

BitmapFlags TODO

type ByStatus

type ByStatus []*Peer

ByStatus implements sort.Interface for []*Peer based on the PeerStatus field.

func (ByStatus) Len

func (a ByStatus) Len() int

func (ByStatus) Less

func (a ByStatus) Less(i, j int) bool

func (ByStatus) Swap

func (a ByStatus) Swap(i, j int)

type File

type File struct {
	Length  int64
	RawPath []string `bencode:"path"`
	Path    string
}

File TODO

type HTTPTrackerResponse

type HTTPTrackerResponse struct {
	Interval int64  `bencode:"interval"`
	Peers    string `bencode:"peers"`
}

HTTPTrackerResponse TODO

type Handshake

type Handshake struct {
	Pstrlen  byte
	Pstr     string
	Reserved [8]byte
	InfoHash [20]byte
	PeerID   [20]byte
}

Handshake TODO

type Peer

type Peer struct {
	IP          net.IP
	Port        uint16
	Choked      bool
	Interested  bool
	PeerStatus  PeerStatus
	ErrorReason string
	PeerID      [20]byte
	// contains filtered or unexported fields
}

Peer TODO

func (*Peer) Connect

func (p *Peer) Connect()

nolint Connect TODO

func (*Peer) ConnectAddr

func (p *Peer) ConnectAddr() string

ConnectAddr TODO

func (*Peer) Init

func (p *Peer) Init() error

Init TODO

func (*Peer) Open

func (p *Peer) Open() (conn net.Conn, err error)

Open TODO

func (*Peer) ResumeFromFile

func (p *Peer) ResumeFromFile() error

ResumeFromFile TODO

func (*Peer) SetTorrent

func (p *Peer) SetTorrent(t *Torrent)

SetTorrent Funcion que setea el torrent en el tracker. Esta funcion existe para no crear una recursividad en gob

func (*Peer) String

func (p *Peer) String() string

String TODO

type PeerStatus

type PeerStatus int

PeerStatus TODO

const (
	PeerDisconnected PeerStatus = iota
	PeerConnected
	PeerError
)

TODO

type PieceMap

type PieceMap struct {
	Flag         BitmapFlags
	Availability int8
}

PieceMap TODO

type Protocol

type Protocol int

Protocol TODO

const (
	HTTP Protocol = iota
	UDP
)

TODO

type Session

type Session struct {
	AllTorrents []*Torrent
	// contains filtered or unexported fields
}

Session TODO

func NewSession

func NewSession() (*Session, error)

NewSession TODO

func NewSessionFromFile

func NewSessionFromFile(fname string) (*Session, error)

NewSessionFromFile TODO

func (*Session) AddTorrent

func (s *Session) AddTorrent(tor *TorrentFile) (*Torrent, error)

AddTorrent TODO

func (*Session) Debug

func (s *Session) Debug()

Debug TODO

func (*Session) ResumeFromFile

func (s *Session) ResumeFromFile() error

ResumeFromFile TODO

func (*Session) Save

func (s *Session) Save() error

Save TODO

type StatusEnum

type StatusEnum int

StatusEnum TODO

const (
	// Stopped Must be sent to the tracker if the client is shutting down gracefully
	Stopped StatusEnum = iota

	// Started The first request to the tracker must include the event key with this value.
	Started

	// Completed Must be sent to the tracker when the download completes.
	// However, must not be sent if the download was already 100% complete when the client started.
	Completed
)

type Torrent

type Torrent struct {
	File       *TorrentFile
	Location   string
	Downloaded int64
	Uploaded   int64
	Left       int64
	Status     StatusEnum
	Trackers   []*Tracker
	Peers      []*Peer
	Bitmap     []PieceMap
	BitmapChan chan int64
	// contains filtered or unexported fields
}

Torrent TODO

func (*Torrent) Debug

func (t *Torrent) Debug()

Debug TODO

func (*Torrent) Init

func (t *Torrent) Init() error

Init TODO

func (*Torrent) ResumeFromFile

func (t *Torrent) ResumeFromFile() error

ResumeFromFile TODO

func (*Torrent) SetSession

func (t *Torrent) SetSession(session *Session)

SetSession TODO

func (*Torrent) Start

func (t *Torrent) Start()

Start TODO

type TorrentFile

type TorrentFile struct {
	// cadena que representa la URL del rastreador
	Announce string
	// (lista de cadenas opcional). Se usa para representar listas de rastreadores alternativos.
	// Es una extensión a la especificación original.
	RawAnnounceList [][]string `bencode:"announce-list"`
	AnnounceList    []string
	// (entero opcional) La fecha de creación del torrent en formato de época UNIX.
	RawCreationDate int64 `bencode:"creation date"`
	CreationDate    time.Time
	// (cadena opcional) Campo libre para el creador del torrent.
	Comment string
	// (cadena opcional) Nombre y versión del programa usado para crear el archivo torrent.
	CreatedBy string `bencode:"created-by"`

	InfoHash []byte
	Info     struct {
		// (cadena) El nombre del archivo o directorio donde se almacenarán los archivos.
		Name string
		// Como dijimos en la introducción, el archivo que queremos compartir es dividido en piezas.
		// Este parámetro es un entero que representa el número de bytes de cada pieza.
		// Piezas demasiado grandes causan ineficiencia y piezas demasiado pequeñas forman un archivo .torrent más pesado.
		// Actualmente se aconseja fijar el tamaño de cada pieza en 512 KB o menos para archivos de varios GBs.
		PieceLength int `bencode:"piece length"`
		// Cadena que representa la concatenación de la lista de claves hash de cada parte del fichero compartido.
		// Las claves hash son generadas utilizando SHA-1 con un resumen de 160 bits y un tamaño máximo por parte de 2^64 bits.
		// Este conjunto de claves se utiliza como mecanismo para asegurar la integridad y consistencia de una parte, una vez ha sido completada la descarga de dicha parte.
		AllPieces string `bencode:"pieces"`
		Pieces    [][]byte
		// (opcional). Es un entero que puede tener valores 0 ó 1 y que indica si se pueden buscar pares fuera de los rastreadores explícitamente descritos en la metainformación o no.
		Private bool
		// (entero) Longitud del archivo en bytes.
		Length int64
		// (cadena opcional). Es una cadena hexadecimal de 32 caracteres correspondiente a la suma MD5 del archivo.
		Md5sum string

		// Sólo aparecerá en el caso de que sea un torrent multi archivo. Es una lista de diccionarios (uno para cada archivo, pero con una estructura diferente a info).
		// Cada uno de estos diccionarios contendrá a su vez información sobre la longitud del archivo, la suma MD5 y una ruta (path) en donde debe ubicarse el archivo en la jerarquía de directorios.
		Files []File
	}
}

TorrentFile TODO

func LoadFromFile

func LoadFromFile(fname string) (*TorrentFile, error)

LoadFromFile TODO

func (*TorrentFile) Debug

func (t *TorrentFile) Debug()

Debug TODO

func (*TorrentFile) GetFiles

func (t *TorrentFile) GetFiles() []File

GetFiles TODO

func (*TorrentFile) GetLength

func (t *TorrentFile) GetLength() int64

GetLength TODO

type Tracker

type Tracker struct {
	Protocol  Protocol
	URL       string
	LastError string
	Status    TrackerStatus
	// contains filtered or unexported fields
}

Tracker TODO

func (*Tracker) Init

func (tr *Tracker) Init() error

Init TODO

func (*Tracker) ResumeFromFile

func (tr *Tracker) ResumeFromFile() error

ResumeFromFile TODO

func (*Tracker) SetTorrent

func (tr *Tracker) SetTorrent(t *Torrent)

SetTorrent Funcion que setea el torrent en el tracker. Esta funcion existe para no crear una recursividad en gob

func (*Tracker) Start

func (tr *Tracker) Start()

Start GoRoutine TODO

type TrackerStatus

type TrackerStatus int

TrackerStatus TODO

const (
	NotConnected TrackerStatus = iota
	Connected
	Error
)

TODO

Jump to

Keyboard shortcuts

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