Documentation ¶
Index ¶
- Constants
- type BaseStore
- type Bitfield
- type Config
- type Event
- type InfoDict
- type Listener
- func (l *Listener) AddSession(s *Session)
- func (l *Listener) Close() error
- func (l *Listener) Errors() chan error
- func (l *Listener) GetSession(infoHash [20]byte) *Session
- func (l *Listener) Listen() error
- func (l *Listener) ListenAndServe() error
- func (l *Listener) Messages() chan string
- func (l *Listener) PeerId() [20]byte
- func (l *Listener) Port() uint16
- func (l *Listener) Serve() error
- func (l *Listener) Sessions() []*Session
- type ListenerConfig
- type MessageType
- type Metainfo
- type Peer
- func (p *Peer) Addr() string
- func (p *Peer) GetAmChoking() (b bool)
- func (p *Peer) GetAmInterested() (b bool)
- func (p *Peer) GetPeerChoking() (b bool)
- func (p *Peer) GetPeerInterested() (b bool)
- func (p *Peer) MarkPieceComplete(index int)
- func (p *Peer) SetAmChoking(b bool) (changed bool)
- func (p *Peer) SetAmInterested(b bool) (changed bool)
- func (p *Peer) SetBitfield(blocks *Bitfield)
- func (p *Peer) SetPeerChoking(b bool) (changed bool)
- func (p *Peer) SetPeerInterested(b bool) (changed bool)
- type PeerAddress
- type PeerSource
- type PeerSourceFactory
- type Session
- func (s *Session) AddPeer(conn net.Conn, hs *handshake) error
- func (s *Session) AddPeerAddress(peerAddress *PeerAddress)
- func (s *Session) AddPeerSource(peerSource PeerSource) error
- func (s *Session) AddTracker(trackerUrl string) error
- func (s *Session) Completed() uint64
- func (s *Session) ConnectToPeer(peerAddress *PeerAddress) error
- func (s *Session) Downloaded() uint64
- func (s *Session) Errors() chan error
- func (s *Session) IP() [4]byte
- func (s *Session) InfoHash() [20]byte
- func (s *Session) Left() uint64
- func (s *Session) Length() uint64
- func (s *Session) Messages() chan string
- func (s *Session) Name() string
- func (s *Session) PeerId() [20]byte
- func (s *Session) Port() uint16
- func (s *Session) RemovePeer(peer *Peer) error
- func (s *Session) SetMetainfo(metainfo *Metainfo) error
- func (s *Session) Start() error
- func (s *Session) State() SessionState
- func (s *Session) Stop() error
- func (s *Session) Uploaded() uint64
- type SessionState
- type Store
- type StoreFactory
- type Trackable
- type Tracker
- type TrackerAnnounceRequest
- type TrackerAnnounceResponse
- type TrackerTransport
- type TrackerTransportFactory
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 ¶
type Bitfield ¶
type Bitfield struct {
// contains filtered or unexported fields
}
func NewBitfield ¶
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 Listener ¶
type Listener struct {
// contains filtered or unexported fields
}
func NewListener ¶
func NewListener(config ListenerConfig) *Listener
func (*Listener) AddSession ¶
func (*Listener) GetSession ¶
func (*Listener) ListenAndServe ¶
type ListenerConfig ¶
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 ¶
type Peer ¶
type Peer struct { Errors chan error Incoming chan interface{} Outgoing chan binaryDumper // contains filtered or unexported fields }
func (*Peer) GetAmChoking ¶
func (*Peer) GetAmInterested ¶
func (*Peer) GetPeerChoking ¶
func (*Peer) GetPeerInterested ¶
func (*Peer) MarkPieceComplete ¶
func (*Peer) SetAmChoking ¶
func (*Peer) SetAmInterested ¶
func (*Peer) SetBitfield ¶
func (*Peer) SetPeerChoking ¶
func (*Peer) SetPeerInterested ¶
type PeerAddress ¶
type PeerSource ¶
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 (*Session) AddPeerAddress ¶
func (s *Session) AddPeerAddress(peerAddress *PeerAddress)
func (*Session) AddPeerSource ¶
func (s *Session) AddPeerSource(peerSource PeerSource) error
func (*Session) AddTracker ¶
func (*Session) ConnectToPeer ¶
func (s *Session) ConnectToPeer(peerAddress *PeerAddress) error
func (*Session) Downloaded ¶
func (*Session) RemovePeer ¶
func (*Session) SetMetainfo ¶
func (*Session) State ¶
func (s *Session) State() SessionState
type SessionState ¶
type SessionState byte
type StoreFactory ¶
type Tracker ¶
type Tracker struct {
// contains filtered or unexported fields
}
func NewTracker ¶
func NewTracker(transport TrackerTransport, subject Trackable) (*Tracker, error)
func (*Tracker) ForceUpdate ¶
func (t *Tracker) ForceUpdate()
func (*Tracker) Peers ¶
func (t *Tracker) Peers() chan *PeerAddress
type TrackerAnnounceRequest ¶
type TrackerAnnounceResponse ¶
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{} }
Source Files ¶
Click to show internal directories.
Click to hide internal directories.