blocksync

package
v0.4.4 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2019 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Open indicates an open state
	Open = iota
	// Closing indicates a closing state
	Closing = Open + 1
	// Closed indicates a closed state
	Closed = Closing + 1
)

Variables

View Source
var (
	// ErrInvalidRange indicates invalid range.
	ErrInvalidRange = errors.New("invalid open/close values")
)
View Source
var WindowSize uint64 = 8

WindowSize defines the size of window

Functions

This section is empty.

Types

type BlockSync

type BlockSync interface {
	lifecycle.StartStopper

	TargetHeight() uint64
	ProcessSyncRequest(ctx context.Context, peer peerstore.PeerInfo, sync *iproto.BlockSync) error
	ProcessBlock(ctx context.Context, blk *block.Block) error
	ProcessBlockSync(ctx context.Context, blk *block.Block) error
}

BlockSync defines the interface of blocksyncer

func NewBlockSyncer

func NewBlockSyncer(
	cfg config.Config,
	chain blockchain.Blockchain,
	ap actpool.ActPool,
	cs consensus.Consensus,
	opts ...Option,
) (BlockSync, error)

NewBlockSyncer returns a new block syncer instance

type Config

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

Config represents the config to setup blocksync

type Neighbors

type Neighbors func(ctx context.Context) ([]peerstore.PeerInfo, error)

Neighbors returns the neighbors' addresses

type Option

type Option func(cfg *Config) error

Option is the option to override the blocksync config

func WithNeighbors

func WithNeighbors(neighborsHandler Neighbors) Option

WithNeighbors is the option to set the neighbors callback

func WithUnicastOutBound

func WithUnicastOutBound(unicastHandler UnicastOutbound) Option

WithUnicastOutBound is the option to set the unicast callback

type SlidingWindow

type SlidingWindow struct {
	State int
	// contains filtered or unexported fields
}

SlidingWindow implements a sliding window

func NewSlidingWindow

func NewSlidingWindow() *SlidingWindow

NewSlidingWindow returns a SlidingWindow instance

func (*SlidingWindow) Next

func (sw *SlidingWindow) Next() uint64

Next returns the next close value of the sliding window

func (*SlidingWindow) SetRange

func (sw *SlidingWindow) SetRange(left uint64, right uint64) error

SetRange set the initial range for sliding window

func (*SlidingWindow) TurnClose

func (sw *SlidingWindow) TurnClose() bool

TurnClose returns true if state transitions Open --> Closing/Closed

func (*SlidingWindow) TurnOpen

func (sw *SlidingWindow) TurnOpen() bool

TurnOpen returns true if state transitions Closing/Closed --> Open

func (*SlidingWindow) Update

func (sw *SlidingWindow) Update(value uint64)

Update updates the window [close, open]

type UnicastOutbound

type UnicastOutbound func(ctx context.Context, peer peerstore.PeerInfo, msg proto.Message) error

UnicastOutbound sends a unicast message to the given address

Jump to

Keyboard shortcuts

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