fetcher

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Aug 19, 2024 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

Package fetcher contains the block announcement based synchronisation.

How fetcher works

If the node receives a whole block, fetcher inserts the block into the chain and broadcast it to its peers. If a block hash is received instead of a block, node requests and reflects the header and body from the peer who sent the block hash.

Source Files

Functions and variables related to fetcher are defined in the files listed below.

  • fetcher.go : It includes functions for fetching the received block, header, body, and a queue data structure for the fetch operation.
  • fetcher_test.go : Functions for testing the fetcher's functions.
  • metrics.go : Metric variables for packet header, body and blocks.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BodyRequesterFn

type BodyRequesterFn func([]common.Hash) error

BodyRequesterFn is a callback type for sending a body retrieval request.

type FakeFetcher

type FakeFetcher struct{}

func NewFakeFetcher

func NewFakeFetcher() *FakeFetcher

func (*FakeFetcher) Enqueue

func (*FakeFetcher) Enqueue(peer string, block *types.Block) error

func (*FakeFetcher) FilterBodies

func (*FakeFetcher) FilterBodies(peer string, transactions [][]*types.Transaction, time time.Time) [][]*types.Transaction

func (*FakeFetcher) FilterHeaders

func (*FakeFetcher) FilterHeaders(peer string, headers []*types.Header, time time.Time) []*types.Header

func (*FakeFetcher) Notify

func (*FakeFetcher) Notify(peer string, hash common.Hash, number uint64, time time.Time, headerFetcher HeaderRequesterFn, bodyFetcher BodyRequesterFn) error

func (*FakeFetcher) Start

func (*FakeFetcher) Start()

func (*FakeFetcher) Stop

func (*FakeFetcher) Stop()

type Fetcher

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

Fetcher is responsible for accumulating block announcements from various peers and scheduling them for retrieval.

func New

func New(getBlock blockRetrievalFn, verifyHeader headerVerifierFn, broadcastBlock blockBroadcasterFn, broadcastBlockHash blockHashBroadcasterFn, chainHeight chainHeightFn, insertChain chainInsertFn, dropPeer peerDropFn) *Fetcher

New creates a block fetcher to retrieve blocks based on hash announcements.

func (*Fetcher) Enqueue

func (f *Fetcher) Enqueue(peer string, block *types.Block) error

Enqueue tries to fill gaps the fetcher's future import queue.

func (*Fetcher) FilterBodies

func (f *Fetcher) FilterBodies(peer string, transactions [][]*types.Transaction, time time.Time) [][]*types.Transaction

FilterBodies extracts all the block bodies that were explicitly requested by the fetcher, returning those that should be handled differently.

func (*Fetcher) FilterHeaders

func (f *Fetcher) FilterHeaders(peer string, headers []*types.Header, time time.Time) []*types.Header

FilterHeaders extracts all the headers that were explicitly requested by the fetcher, returning those that should be handled differently.

func (*Fetcher) Notify

func (f *Fetcher) Notify(peer string, hash common.Hash, number uint64, time time.Time,
	headerFetcher HeaderRequesterFn, bodyFetcher BodyRequesterFn,
) error

Notify announces the fetcher of the potential availability of a new block in the network.

func (*Fetcher) Start

func (f *Fetcher) Start()

Start boots up the announcement based synchroniser, accepting and processing hash notifications and block fetches until termination requested.

func (*Fetcher) Stop

func (f *Fetcher) Stop()

Stop terminates the announcement based synchroniser, canceling all pending operations.

type HeaderRequesterFn

type HeaderRequesterFn func(common.Hash) error

HeaderRequesterFn is a callback type for sending a header retrieval request.

Jump to

Keyboard shortcuts

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