Documentation ¶
Index ¶
- func NewHeadBroadcaster() httypes.HeadBroadcaster
- type Config
- type HeadListener
- type HeadSaver
- func (ht *HeadSaver) Chain(ctx context.Context, hash common.Hash, depth uint) (models.Head, error)
- func (ht *HeadSaver) HeadByHash(ctx context.Context, hash common.Hash) (*models.Head, error)
- func (ht *HeadSaver) HighestSeenHead() *models.Head
- func (ht *HeadSaver) HighestSeenHeadFromDB() (*models.Head, error)
- func (ht *HeadSaver) IdempotentInsertHead(ctx context.Context, head models.Head) error
- func (ht *HeadSaver) Save(ctx context.Context, h models.Head) error
- func (ht *HeadSaver) SetHighestSeenHeadFromDB() (*models.Head, error)
- type HeadTracker
- func (ht *HeadTracker) Backfill(ctx context.Context, headWithChain models.Head, depth uint) (err error)
- func (ht *HeadTracker) Connected() bool
- func (ht *HeadTracker) Healthy() error
- func (ht *HeadTracker) HighestSeenHead() *models.Head
- func (ht *HeadTracker) HighestSeenHeadFromDB() (*models.Head, error)
- func (ht *HeadTracker) Save(ctx context.Context, h models.Head) error
- func (ht *HeadTracker) SetLogger(logger *logger.Logger)
- func (ht *HeadTracker) Start() error
- func (ht *HeadTracker) Stop() error
- type NullBroadcaster
- func (*NullBroadcaster) Close() error
- func (*NullBroadcaster) Connect(head *models.Head) error
- func (n *NullBroadcaster) Healthy() error
- func (*NullBroadcaster) OnNewLongestChain(ctx context.Context, head models.Head)
- func (n *NullBroadcaster) Ready() error
- func (*NullBroadcaster) Start() error
- func (*NullBroadcaster) Subscribe(callback httypes.HeadTrackable) (currentLongestChain *models.Head, unsubscribe func())
- type NullTracker
- type ORM
- func (orm *ORM) Chain(ctx context.Context, hash common.Hash, lookback uint) (models.Head, error)
- func (orm *ORM) HeadByHash(ctx context.Context, hash common.Hash) (*models.Head, error)
- func (orm *ORM) IdempotentInsertHead(ctx context.Context, h models.Head) error
- func (orm *ORM) LastHead(ctx context.Context) (*models.Head, error)
- func (orm *ORM) TrimOldHeads(ctx context.Context, n uint) (err error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewHeadBroadcaster ¶
func NewHeadBroadcaster() httypes.HeadBroadcaster
NewHeadBroadcaster creates a new HeadBroadcaster
Types ¶
type HeadListener ¶
type HeadListener struct {
// contains filtered or unexported fields
}
func NewHeadListener ¶
func (*HeadListener) Connected ¶
func (hl *HeadListener) Connected() bool
Connected returns whether or not this HeadTracker is connected.
func (*HeadListener) ListenForNewHeads ¶
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
}
TODO: Needs to be optimised to allow for in-memory reads and not hit the DB every time See: https://app.clubhouse.io/chainlinklabs/story/13314/optimise-headsaver-to-not-hit-the-db-so-much
func NewHeadSaver ¶
func (*HeadSaver) HeadByHash ¶ added in v0.10.10
func (*HeadSaver) HighestSeenHead ¶
HighestSeenHead returns the block header with the highest number that has been seen, or nil
func (*HeadSaver) HighestSeenHeadFromDB ¶
func (*HeadSaver) IdempotentInsertHead ¶
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, ethClient eth.Client, config Config, orm *ORM, 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) Connected ¶
func (ht *HeadTracker) Connected() bool
Connected returns whether or not this HeadTracker is connected.
func (*HeadTracker) Healthy ¶ added in v0.10.11
func (ht *HeadTracker) Healthy() error
func (*HeadTracker) HighestSeenHead ¶
func (ht *HeadTracker) HighestSeenHead() *models.Head
func (*HeadTracker) HighestSeenHeadFromDB ¶
func (ht *HeadTracker) HighestSeenHeadFromDB() (*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) 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) (currentLongestChain *models.Head, unsubscribe func())
type NullTracker ¶
type NullTracker struct{}
func (*NullTracker) Healthy ¶ added in v0.10.11
func (*NullTracker) Healthy() error
func (*NullTracker) HighestSeenHeadFromDB ¶
func (n *NullTracker) HighestSeenHeadFromDB() (*models.Head, error)
func (*NullTracker) Ready ¶ added in v0.10.11
func (*NullTracker) Ready() error
func (*NullTracker) SetLogger ¶
func (*NullTracker) SetLogger(*logger.Logger)
func (*NullTracker) Start ¶
func (*NullTracker) Start() error
func (*NullTracker) Stop ¶
func (*NullTracker) Stop() error
type ORM ¶ added in v0.10.10
type ORM struct {
// contains filtered or unexported fields
}
func (*ORM) Chain ¶ added in v0.10.10
Chain return the chain of heads starting at hash and up to lookback parents Returns RecordNotFound if no head with the given hash exists
func (*ORM) HeadByHash ¶ added in v0.10.10
HeadByHash fetches the head with the given hash from the db, returns nil if none exists
func (*ORM) IdempotentInsertHead ¶ added in v0.10.10
IdempotentInsertHead inserts a head only if the hash is new. Will do nothing if hash exists already. No advisory lock required because this is thread safe.