headtracker

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2021 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewHeadBroadcaster

func NewHeadBroadcaster() httypes.HeadBroadcaster

NewHeadBroadcaster creates a new HeadBroadcaster

Types

type Config

type Config interface {
	EthHeadTrackerMaxBufferSize() uint
	EthereumURL() string
	ChainID() *big.Int
}

type HeadListener

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

func NewHeadListener

func NewHeadListener(l *logger.Logger,
	ethClient eth.Client,
	config Config,
	chStop chan struct{},
	wgDone *sync.WaitGroup,
	sleepers ...utils.Sleeper,
) *HeadListener

func (*HeadListener) Connected

func (hl *HeadListener) Connected() bool

Connected returns whether or not this HeadTracker is connected.

func (*HeadListener) ListenForNewHeads

func (hl *HeadListener) ListenForNewHeads(handleNewHead func(ctx context.Context, header models.Head) error, connected func())

func (*HeadListener) SetLogger

func (hl *HeadListener) SetLogger(logger *logger.Logger)

SetLogger sets and reconfigures the log for the head tracker service

type HeadSaver

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

func NewHeadSaver

func NewHeadSaver(store *strpkg.Store) *HeadSaver

func (*HeadSaver) Chain

func (ht *HeadSaver) Chain(ctx context.Context, hash common.Hash, depth uint) (models.Head, error)

func (*HeadSaver) HighestSeenHead

func (ht *HeadSaver) HighestSeenHead() *models.Head

HighestSeenHead returns the block header with the highest number that has been seen, or nil

func (*HeadSaver) HighestSeenHeadFromDB

func (ht *HeadSaver) HighestSeenHeadFromDB() (*models.Head, error)

func (*HeadSaver) IdempotentInsertHead

func (ht *HeadSaver) IdempotentInsertHead(ctx context.Context, head models.Head) error

func (*HeadSaver) Save

func (ht *HeadSaver) Save(ctx context.Context, h models.Head) error

Save updates the latest block number, if indeed the latest, and persists this number in case of reboot. Thread safe.

func (*HeadSaver) SetHighestSeenHeadFromDB

func (ht *HeadSaver) SetHighestSeenHeadFromDB() (*models.Head, error)

type HeadTracker

type HeadTracker struct {
	utils.StartStopOnce
	// contains filtered or unexported fields
}

HeadTracker holds and stores the latest block number experienced by this particular node in a thread safe manner. Reconstitutes the last block number from the data store on reboot.

func NewHeadTracker

func NewHeadTracker(
	l *logger.Logger,
	store *strpkg.Store,
	headBroadcaster httypes.HeadBroadcaster,
	sleepers ...utils.Sleeper,
) *HeadTracker

NewHeadTracker instantiates a new HeadTracker using the orm to persist new block numbers. Can be passed in an optional sleeper object that will dictate how often it tries to reconnect.

func (*HeadTracker) Backfill

func (ht *HeadTracker) Backfill(ctx context.Context, headWithChain models.Head, depth uint) (err error)

Backfill given a head will fill in any missing heads up to the given depth

func (*HeadTracker) Chain

func (ht *HeadTracker) Chain(ctx context.Context, hash common.Hash, depth uint) (models.Head, error)

func (*HeadTracker) Connected

func (ht *HeadTracker) Connected() bool

Connected returns whether or not this HeadTracker is connected.

func (*HeadTracker) HighestSeenHead

func (ht *HeadTracker) HighestSeenHead() *models.Head

func (*HeadTracker) HighestSeenHeadFromDB

func (ht *HeadTracker) HighestSeenHeadFromDB() (*models.Head, error)

func (*HeadTracker) Save

func (ht *HeadTracker) Save(ctx context.Context, h models.Head) error

func (*HeadTracker) SetLogger

func (ht *HeadTracker) SetLogger(logger *logger.Logger)

SetLogger sets and reconfigures the log for the head tracker service

func (*HeadTracker) Start

func (ht *HeadTracker) Start() error

Start retrieves the last persisted block number from the HeadTracker, subscribes to new heads, and if successful fires Connect on the HeadTrackable argument.

func (*HeadTracker) Stop

func (ht *HeadTracker) Stop() error

Stop unsubscribes all connections and fires Disconnect.

type NullBroadcaster

type NullBroadcaster struct{}

func (*NullBroadcaster) Close

func (*NullBroadcaster) Close() error

func (*NullBroadcaster) Connect

func (*NullBroadcaster) Connect(head *models.Head) error

func (*NullBroadcaster) Healthy

func (n *NullBroadcaster) Healthy() error

func (*NullBroadcaster) OnNewLongestChain

func (*NullBroadcaster) OnNewLongestChain(ctx context.Context, head models.Head)

func (*NullBroadcaster) Ready

func (n *NullBroadcaster) Ready() error

func (*NullBroadcaster) Start

func (*NullBroadcaster) Start() error

func (*NullBroadcaster) Subscribe

func (*NullBroadcaster) Subscribe(callback httypes.HeadTrackable) (unsubscribe func())

type NullTracker

type NullTracker struct{}

func (*NullTracker) HighestSeenHeadFromDB

func (n *NullTracker) HighestSeenHeadFromDB() (*models.Head, error)

func (*NullTracker) SetLogger

func (*NullTracker) SetLogger(*logger.Logger)

func (*NullTracker) Start

func (*NullTracker) Start() error

func (*NullTracker) Stop

func (*NullTracker) Stop() error

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

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