Documentation ¶
Index ¶
- Variables
- type Block
- type DoneEvent
- type Downloader
- func (d *Downloader) Cancel() bool
- func (d *Downloader) DeliverBlocks(id string, blocks []*types.Block) error
- func (d *Downloader) DeliverHashes(id string, hashes []common.Hash) error
- func (d *Downloader) Has(hash common.Hash) bool
- func (d *Downloader) RegisterPeer(id string, head common.Hash, getHashes hashFetcherFn, getBlocks blockFetcherFn) error
- func (d *Downloader) Stats() (current int, max int)
- func (d *Downloader) Synchronise(id string, hash common.Hash) error
- func (d *Downloader) Synchronising() bool
- func (d *Downloader) TakeBlocks() []*Block
- func (d *Downloader) UnregisterPeer(id string) error
- type FailedEvent
- type StartEvent
Constants ¶
This section is empty.
Variables ¶
var ( MinHashFetch = 512 // Minimum amount of hashes to not consider a peer stalling MaxHashFetch = 2048 // Amount of hashes to be fetched per retrieval request MaxBlockFetch = 128 // Amount of blocks to be fetched per retrieval request )
var ( ErrBusy = errors.New("busy") ErrBadPeer = errors.New("action from bad peer ignored") ErrStallingPeer = errors.New("peer is stalling") ErrPendingQueue = errors.New("pending items in queue") ErrTimeout = errors.New("timeout") ErrEmptyHashSet = errors.New("empty hash set by peer") ErrInvalidChain = errors.New("retrieved hash chain is invalid") ErrCrossCheckFailed = errors.New("block cross-check failed") )
Functions ¶
This section is empty.
Types ¶
type Downloader ¶
type Downloader struct {
// contains filtered or unexported fields
}
func New ¶
func New(mux *event.TypeMux, hasBlock hashCheckFn, getBlock getBlockFn) *Downloader
func (*Downloader) Cancel ¶ added in v0.9.21
func (d *Downloader) Cancel() bool
Cancel cancels all of the operations and resets the queue. It returns true if the cancel operation was completed.
func (*Downloader) DeliverBlocks ¶ added in v0.9.21
func (d *Downloader) DeliverBlocks(id string, blocks []*types.Block) error
DeliverBlocks injects a new batch of blocks received from a remote node. This is usually invoked through the BlocksMsg by the protocol handler.
func (*Downloader) DeliverHashes ¶ added in v0.9.21
func (d *Downloader) DeliverHashes(id string, hashes []common.Hash) error
DeliverHashes injects a new batch of hashes received from a remote node into the download schedule. This is usually invoked through the BlockHashesMsg by the protocol handler.
func (*Downloader) Has ¶
func (d *Downloader) Has(hash common.Hash) bool
Has checks if the downloader knows about a particular hash, meaning that its either already downloaded of pending retrieval.
func (*Downloader) RegisterPeer ¶
func (d *Downloader) RegisterPeer(id string, head common.Hash, getHashes hashFetcherFn, getBlocks blockFetcherFn) error
RegisterPeer injects a new download peer into the set of block source to be used for fetching hashes and blocks from.
func (*Downloader) Stats ¶
func (d *Downloader) Stats() (current int, max int)
func (*Downloader) Synchronise ¶
func (d *Downloader) Synchronise(id string, hash common.Hash) error
Synchronise will select the peer and use it for synchronising. If an empty string is given it will use the best peer possible and synchronize if it's TD is higher than our own. If any of the checks fail an error will be returned. This method is synchronous
func (*Downloader) Synchronising ¶ added in v0.9.21
func (d *Downloader) Synchronising() bool
Synchronising returns the state of the downloader
func (*Downloader) TakeBlocks ¶
func (d *Downloader) TakeBlocks() []*Block
TakeBlocks takes blocks from the queue and yields them to the caller.
func (*Downloader) UnregisterPeer ¶
func (d *Downloader) UnregisterPeer(id string) error
UnregisterPeer remove a peer from the known list, preventing any action from the specified peer.
type FailedEvent ¶ added in v0.9.21
type FailedEvent struct{ Err error }
type StartEvent ¶ added in v0.9.21
type StartEvent struct{}