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) 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
- type LocalDataSource
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 NewFetch ¶
func NewFetch(ctx context.Context, cfg Config, h *p2p.Host, dbs map[Hint]database.Getter, logger log.Log) *Fetch
NewFetch creates a new Fetch struct.
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 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.
type LocalDataSource ¶
LocalDataSource defines the mapping between hint for local data source and the actual data source.