libtorrent

package module
v0.0.0-...-6b14619 Latest Latest
Warning

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

Go to latest
Published: Aug 22, 2014 License: GPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MESSAGE_CHOKE = MessageType(iota)
	MESSAGE_UNCHOKE
	MESSAGE_INTERESTED
	MESSAGE_UNINTERESTED
	MESSAGE_HAVE
	MESSAGE_BITFIELD
	MESSAGE_REQUEST
	MESSAGE_PIECE
	MESSAGE_CANCEL
	MESSAGE_EXTENDED = MessageType(20)
)
View Source
const (
	STATE_STOPPED = SessionState(iota)
	STATE_LEARNING
	STATE_LEECHING
	STATE_SEEDING
)
View Source
const (
	EVENT_NONE = Event(iota)
	EVENT_COMPLETED
	EVENT_STARTED
	EVENT_STOPPED
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseStore

type BaseStore struct {
	// contains filtered or unexported fields
}

func NewBaseStore

func NewBaseStore(metainfo *Metainfo) *BaseStore

func (*BaseStore) Blocks

func (s *BaseStore) Blocks() int

func (*BaseStore) GetHash

func (s *BaseStore) GetHash(index int) (hash [20]byte, err error)

func (*BaseStore) GetOffset

func (s *BaseStore) GetOffset(index int) uint64

func (*BaseStore) GetSize

func (s *BaseStore) GetSize(index int) uint64

type Bitfield

type Bitfield struct {
	// contains filtered or unexported fields
}

func NewBitfield

func NewBitfield(data []byte, length int) *Bitfield

func (*Bitfield) Bytes

func (bf *Bitfield) Bytes() []byte

func (*Bitfield) Get

func (bf *Bitfield) Get(i int) bool

func (*Bitfield) Length

func (bf *Bitfield) Length() int

func (*Bitfield) Set

func (bf *Bitfield) Set(i int, v bool)

func (*Bitfield) Sum

func (bf *Bitfield) Sum() int

type Config

type Config struct {
	InfoHash          [20]byte
	PeerId            [20]byte
	IP                [4]byte
	Port              uint16
	Name              string
	StoreFactory      StoreFactory
	PeerSources       []PeerSourceFactory
	TrackerTransports map[string]TrackerTransportFactory
	Trackers          []string
	Metainfo          *Metainfo
}

type Event

type Event byte

type InfoDict

type InfoDict struct {
	Length      uint64
	Name        string
	Pieces      []byte
	PieceLength uint64 `bencode:"piece length"`
	Files       []struct {
		Length uint64
		Path   []string
	}
}

type Listener

type Listener struct {
	// contains filtered or unexported fields
}

func NewListener

func NewListener(config ListenerConfig) *Listener

func (*Listener) AddSession

func (l *Listener) AddSession(s *Session)

func (*Listener) Close

func (l *Listener) Close() error

func (*Listener) Errors

func (l *Listener) Errors() chan error

func (*Listener) GetSession

func (l *Listener) GetSession(infoHash [20]byte) *Session

func (*Listener) Listen

func (l *Listener) Listen() error

func (*Listener) ListenAndServe

func (l *Listener) ListenAndServe() error

func (*Listener) Messages

func (l *Listener) Messages() chan string

func (*Listener) PeerId

func (l *Listener) PeerId() [20]byte

func (*Listener) Port

func (l *Listener) Port() uint16

func (*Listener) Serve

func (l *Listener) Serve() error

func (*Listener) Sessions

func (l *Listener) Sessions() []*Session

type ListenerConfig

type ListenerConfig struct {
	PeerId [20]byte
	Port   uint16
}

type MessageType

type MessageType byte

type Metainfo

type Metainfo struct {
	Name         string
	AnnounceList []string
	Pieces       [][20]byte
	PieceCount   int
	PieceLength  uint64
	InfoHash     [20]byte
	Files        []struct {
		Length uint64
		Path   string
	}
}

func ParseInfoDict

func ParseInfoDict(b []byte) (*Metainfo, error)

func ParseMetainfo

func ParseMetainfo(r io.Reader) (*Metainfo, error)

type Peer

type Peer struct {
	Errors   chan error
	Incoming chan interface{}
	Outgoing chan binaryDumper
	// contains filtered or unexported fields
}

func NewPeer

func NewPeer(addr string, hs *handshake, conn io.ReadWriter) (p *Peer)

func (*Peer) Addr

func (p *Peer) Addr() string

func (*Peer) GetAmChoking

func (p *Peer) GetAmChoking() (b bool)

func (*Peer) GetAmInterested

func (p *Peer) GetAmInterested() (b bool)

func (*Peer) GetPeerChoking

func (p *Peer) GetPeerChoking() (b bool)

func (*Peer) GetPeerInterested

func (p *Peer) GetPeerInterested() (b bool)

func (*Peer) MarkPieceComplete

func (p *Peer) MarkPieceComplete(index int)

func (*Peer) SetAmChoking

func (p *Peer) SetAmChoking(b bool) (changed bool)

func (*Peer) SetAmInterested

func (p *Peer) SetAmInterested(b bool) (changed bool)

func (*Peer) SetBitfield

func (p *Peer) SetBitfield(blocks *Bitfield)

func (*Peer) SetPeerChoking

func (p *Peer) SetPeerChoking(b bool) (changed bool)

func (*Peer) SetPeerInterested

func (p *Peer) SetPeerInterested(b bool) (changed bool)

type PeerAddress

type PeerAddress struct {
	Host string
	Port uint16
}

type PeerSource

type PeerSource interface {
	Metainfo(m *Metainfo) error
	Errors() chan error
	Peers() chan *PeerAddress
	Start() error
	Stop() error
	ForceUpdate()
}

type PeerSourceFactory

type PeerSourceFactory struct {
	Constructor func(s *Session, config interface{}) (PeerSource, error)
	Config      interface{}
}

type Session

type Session struct {
	// contains filtered or unexported fields
}

func NewSession

func NewSession(config *Config) (*Session, error)

func (*Session) AddPeer

func (s *Session) AddPeer(conn net.Conn, hs *handshake) error

func (*Session) AddPeerAddress

func (s *Session) AddPeerAddress(peerAddress *PeerAddress)

func (*Session) AddPeerSource

func (s *Session) AddPeerSource(peerSource PeerSource) error

func (*Session) AddTracker

func (s *Session) AddTracker(trackerUrl string) error

func (*Session) Completed

func (s *Session) Completed() uint64

func (*Session) ConnectToPeer

func (s *Session) ConnectToPeer(peerAddress *PeerAddress) error

func (*Session) Downloaded

func (s *Session) Downloaded() uint64

func (*Session) Errors

func (s *Session) Errors() chan error

func (*Session) IP

func (s *Session) IP() [4]byte

func (*Session) InfoHash

func (s *Session) InfoHash() [20]byte

func (*Session) Left

func (s *Session) Left() uint64

func (*Session) Length

func (s *Session) Length() uint64

func (*Session) Messages

func (s *Session) Messages() chan string

func (*Session) Name

func (s *Session) Name() string

func (*Session) PeerId

func (s *Session) PeerId() [20]byte

func (*Session) Port

func (s *Session) Port() uint16

func (*Session) RemovePeer

func (s *Session) RemovePeer(peer *Peer) error

func (*Session) SetMetainfo

func (s *Session) SetMetainfo(metainfo *Metainfo) error

func (*Session) Start

func (s *Session) Start() error

func (*Session) State

func (s *Session) State() SessionState

func (*Session) Stop

func (s *Session) Stop() error

func (*Session) Uploaded

func (s *Session) Uploaded() uint64

type SessionState

type SessionState byte

type Store

type Store interface {
	Blocks() int
	GetSize(index int) int64
	GetHash(index int) (hash [20]byte, err error)
	GetOffset(index int) int64
	GetBlock(index int, offset int64, block []byte) (n int, err error)
	SetBlock(index int, offset int64, block []byte) (n int, err error)
}

type StoreFactory

type StoreFactory struct {
	Constructor func(m *Metainfo, config interface{}) (store Store, err error)
	Config      interface{}
}

type Trackable

type Trackable interface {
	InfoHash() [20]byte
	PeerId() [20]byte
	IP() [4]byte
	Port() uint16
	Uploaded() uint64
	Downloaded() uint64
	Left() uint64
}

type Tracker

type Tracker struct {
	// contains filtered or unexported fields
}

func NewTracker

func NewTracker(transport TrackerTransport, subject Trackable) (*Tracker, error)

func (*Tracker) Errors

func (t *Tracker) Errors() chan error

func (*Tracker) ForceUpdate

func (t *Tracker) ForceUpdate()

func (*Tracker) Metainfo

func (t *Tracker) Metainfo(metainfo *Metainfo) error

func (*Tracker) Peers

func (t *Tracker) Peers() chan *PeerAddress

func (*Tracker) Start

func (t *Tracker) Start() error

func (*Tracker) Stop

func (t *Tracker) Stop() error

type TrackerAnnounceRequest

type TrackerAnnounceRequest struct {
	Event      Event
	InfoHash   [20]byte
	PeerId     [20]byte
	IP         [4]byte
	Port       uint16
	Uploaded   uint64
	Downloaded uint64
	Left       uint64
}

type TrackerAnnounceResponse

type TrackerAnnounceResponse struct {
	Leechers          uint32
	Seeders           uint32
	Peers             []*PeerAddress
	SuggestedInterval time.Duration
	RequiredInterval  time.Duration
}

type TrackerTransport

type TrackerTransport interface {
	Announce(req *TrackerAnnounceRequest) (*TrackerAnnounceResponse, error)
}

type TrackerTransportFactory

type TrackerTransportFactory struct {
	Constructor func(u *url.URL, config interface{}) (TrackerTransport, error)
	Config      interface{}
}

Directories

Path Synopsis
peersource
store
tracker
udp

Jump to

Keyboard shortcuts

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