Documentation ¶
Overview ¶
Package fetch contains mechanism to fetch Data from remote peers
Index ¶
- Constants
- Variables
- func GetRandomPeer(peers []p2p.Peer) p2p.Peer
- type Config
- type ErrCouldNotSend
- type Fetch
- func (f *Fetch) AddDB(hint Hint, db database.Getter)
- func (f *Fetch) FetchRequestHandler(ctx context.Context, data []byte) ([]byte, error)
- func (f *Fetch) GetHash(hash types.Hash32, h Hint, validateHash bool) chan HashDataPromiseResult
- func (f *Fetch) GetHashes(hashes []types.Hash32, hint Hint, validateHash bool) map[types.Hash32]chan HashDataPromiseResult
- func (f *Fetch) Start()
- func (f *Fetch) Stop()
- type Fetcher
- type HashDataPromiseResult
- type Hint
Constants ¶
const ( // Low will perform batched calls. Low priority = 0 // High will call fetch immediately. High priority = 1 )
Message priority constants.
Variables ¶
var ErrExceedMaxRetries = errors.New("fetch failed after max retries for request")
ErrExceedMaxRetries is returned when MaxRetriesForRequest attempts has been made to fetch data for a hash and failed.
Functions ¶
Types ¶
type Config ¶
type Config struct { BatchTimeout int // in milliseconds MaxRetriesForPeer int BatchSize int RequestTimeout int // in seconds MaxRetriesForRequest int }
Config is the configuration file of the Fetch component.
func DefaultConfig ¶ added in v1.0.0
func DefaultConfig() Config
DefaultConfig is the default config for the fetch component.
type ErrCouldNotSend ¶
type ErrCouldNotSend error
ErrCouldNotSend is a special type of error indicating fetch could not be done because message could not be sent to peers.
type Fetch ¶
type Fetch struct {
// contains filtered or unexported fields
}
Fetch is the main struct that contains network peers and logic to batch and dispatch hash fetch requests.
func (*Fetch) AddDB ¶
AddDB adds a DB with corresponding hint all network peersProvider will be able to query this DB.
func (*Fetch) FetchRequestHandler ¶
FetchRequestHandler handles requests for sync from peersProvider, and basically reads Data from database and puts it in a response batch.
func (*Fetch) GetHash ¶
GetHash is the regular buffered call to get a specific hash, using provided hash, h as hint the receiving end will know where to look for the hash, this function returns HashDataPromiseResult channel that will hold Data received or error.
type Fetcher ¶
type Fetcher interface { GetHash(hash types.Hash32, h Hint, validateHash bool) chan HashDataPromiseResult GetHashes(hash []types.Hash32, hint Hint, validateHash bool) map[types.Hash32]chan HashDataPromiseResult AddDB(hint Hint, db database.Getter) Stop() Start() }
Fetcher is the general interface of the fetching unit, capable of requesting bytes that corresponds to a hash from other remote peers.
type HashDataPromiseResult ¶
HashDataPromiseResult is the result strict when requesting Data corresponding to the Hash.