layerfetcher

package
v0.2.14-beta.0 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2022 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package layerfetcher fetches layers from remote peers

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrNoPeers is returned when node has no peers.
	ErrNoPeers = errors.New("no peers")
	// ErrInternal is returned from the peer when the peer encounters an internal error.
	ErrInternal = errors.New("unspecified error returned by peer")
	// ErrLayerDataNotFetched is returned when any layer data is not fetched successfully.
	ErrLayerDataNotFetched = errors.New("layer data not fetched")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	fetch.Config
	GoldenATXID types.ATXID
}

Config defines configuration for layer fetching logic.

func DefaultConfig

func DefaultConfig() Config

DefaultConfig returns default configuration for layer fetching logic.

type DataHandlers

type DataHandlers struct {
	ATX      atxHandler
	Ballot   ballotHandler
	Block    blockHandler
	Proposal proposalHandler
	TX       txHandler
}

DataHandlers collects handlers for different data type.

type Future

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

Future is a preparation for using actual futures in the code, this will allow to truly execute asynchronous reads and receive result only when needed.

func (*Future) Result

func (f *Future) Result() fetch.HashDataPromiseResult

Result actually evaluates the result of the fetch task.

type LayerPromiseResult

type LayerPromiseResult struct {
	Err   error
	Layer types.LayerID
}

LayerPromiseResult is the result of trying to fetch data for an entire layer.

type Logic

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

Logic is the struct containing components needed to follow layer fetching logic.

func NewLogic

func NewLogic(ctx context.Context, cfg Config, poet poetDB, atxIDs atxIDsDB, layers layerDB,
	host *p2p.Host, handlers DataHandlers, dbStores fetch.LocalDataSource, log log.Log,
) *Logic

NewLogic creates a new instance of layer fetching logic.

func (*Logic) Close

func (l *Logic) Close()

Close closes all running workers.

func (*Logic) FetchAtx

func (l *Logic) FetchAtx(ctx context.Context, id types.ATXID) error

FetchAtx returns error if ATX was not found.

func (*Logic) GetAtxs

func (l *Logic) GetAtxs(ctx context.Context, IDs []types.ATXID) error

GetAtxs gets the data for given atx ids IDs and validates them. returns an error if at least one ATX cannot be fetched.

func (*Logic) GetBallots

func (l *Logic) GetBallots(ctx context.Context, ids []types.BallotID) error

GetBallots gets data for the specified BallotIDs and validates them.

func (*Logic) GetBlocks

func (l *Logic) GetBlocks(ctx context.Context, ids []types.BlockID) error

GetBlocks gets the data for given block IDs from peers.

func (*Logic) GetEpochATXs

func (l *Logic) GetEpochATXs(ctx context.Context, id types.EpochID) error

GetEpochATXs fetches all atxs received by peer for given layer.

func (*Logic) GetPoetProof

func (l *Logic) GetPoetProof(ctx context.Context, id types.Hash32) error

GetPoetProof gets poet proof from remote peer.

func (*Logic) GetProposals

func (l *Logic) GetProposals(ctx context.Context, ids []types.ProposalID) error

GetProposals gets the data for given proposal IDs from peers.

func (*Logic) GetTxs

func (l *Logic) GetTxs(ctx context.Context, IDs []types.TransactionID) error

GetTxs fetches the txs provided as IDs and validates them, returns an error if one TX failed to be fetched.

func (*Logic) PollLayerContent

func (l *Logic) PollLayerContent(ctx context.Context, layerID types.LayerID) chan LayerPromiseResult

PollLayerContent polls peers for the content of a given layer ID. it returns a channel for the caller to be notified when responses are received from all peers.

func (*Logic) Start

func (l *Logic) Start()

Start starts layerFetcher logic and fetch component.

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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