Documentation ¶
Index ¶
- type Config
- type Engine
- func (e *Engine) Done() <-chan struct{}
- func (e *Engine) Process(channel channels.Channel, originID flow.Identifier, event interface{}) error
- func (e *Engine) ProcessLocal(event interface{}) error
- func (e *Engine) Ready() <-chan struct{}
- func (e *Engine) Submit(channel channels.Channel, originID flow.Identifier, event interface{})
- func (e *Engine) SubmitLocal(event interface{})
- type FinalizedHeaderCache
- type OptionFunc
- type RequestHandler
- type RequestHandlerEngine
- type RequestHeap
- type ResponseSender
- type ResponseSenderImpl
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
func DefaultConfig ¶
func DefaultConfig() *Config
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine is the synchronization engine, responsible for synchronizing chain state.
func New ¶
func New( log zerolog.Logger, metrics module.EngineMetrics, net network.Network, me module.Local, blocks storage.Blocks, comp network.Engine, core module.SyncCore, finalizedHeader *FinalizedHeaderCache, participantsProvider module.IdentifierProvider, opts ...OptionFunc, ) (*Engine, error)
New creates a new main chain synchronization engine.
func (*Engine) Done ¶
func (e *Engine) Done() <-chan struct{}
Done returns a done channel that is closed once the engine has fully stopped.
func (*Engine) Process ¶
func (e *Engine) Process(channel channels.Channel, originID flow.Identifier, event interface{}) error
Process processes the given event from the node with the given origin ID in a blocking manner. It returns the potential processing error when done.
func (*Engine) ProcessLocal ¶
ProcessLocal processes an event originating on the local node.
func (*Engine) Ready ¶
func (e *Engine) Ready() <-chan struct{}
Ready returns a ready channel that is closed once the engine has fully started.
func (*Engine) Submit ¶
func (e *Engine) Submit(channel channels.Channel, originID flow.Identifier, event interface{})
Submit submits the given event from the node with the given origin ID for processing in a non-blocking manner. It returns instantly and logs a potential processing error internally when done.
func (*Engine) SubmitLocal ¶
func (e *Engine) SubmitLocal(event interface{})
SubmitLocal submits an event originating on the local node.
type FinalizedHeaderCache ¶
type FinalizedHeaderCache struct {
// contains filtered or unexported fields
}
FinalizedHeaderCache represents the cached value of the latest finalized header. It is used in Engine to access latest valid data.
func NewFinalizedHeaderCache ¶
func NewFinalizedHeaderCache(log zerolog.Logger, state protocol.State, finalizationDistributor *pubsub.FinalizationDistributor) (*FinalizedHeaderCache, error)
NewFinalizedHeaderCache creates a new finalized header cache.
func (*FinalizedHeaderCache) Done ¶
func (f *FinalizedHeaderCache) Done() <-chan struct{}
func (*FinalizedHeaderCache) Get ¶
func (f *FinalizedHeaderCache) Get() *flow.Header
Get returns the last locally cached finalized header.
func (*FinalizedHeaderCache) Ready ¶
func (f *FinalizedHeaderCache) Ready() <-chan struct{}
type OptionFunc ¶
type OptionFunc func(*Config)
func WithPollInterval ¶
func WithPollInterval(interval time.Duration) OptionFunc
WithPollInterval sets a custom interval at which we scan for poll items
func WithScanInterval ¶
func WithScanInterval(interval time.Duration) OptionFunc
WithScanInterval sets a custom interval at which we scan for pending items and batch them for requesting.
type RequestHandler ¶
type RequestHandler struct {
// contains filtered or unexported fields
}
func NewRequestHandler ¶
func NewRequestHandler( log zerolog.Logger, metrics module.EngineMetrics, responseSender ResponseSender, me module.Local, blocks storage.Blocks, core module.SyncCore, finalizedHeader *FinalizedHeaderCache, queueMissingHeights bool, ) *RequestHandler
func (*RequestHandler) Done ¶
func (r *RequestHandler) Done() <-chan struct{}
Done returns a done channel that is closed once the engine has fully stopped.
func (*RequestHandler) Process ¶
func (r *RequestHandler) Process(channel channels.Channel, originID flow.Identifier, event interface{}) error
Process processes the given event from the node with the given origin ID in a blocking manner. It returns the potential processing error when done.
func (*RequestHandler) Ready ¶
func (r *RequestHandler) Ready() <-chan struct{}
Ready returns a ready channel that is closed once the engine has fully started.
type RequestHandlerEngine ¶
type RequestHandlerEngine struct {
// contains filtered or unexported fields
}
func NewRequestHandlerEngine ¶
func NewRequestHandlerEngine( logger zerolog.Logger, metrics module.EngineMetrics, net network.Network, me module.Local, blocks storage.Blocks, core module.SyncCore, finalizedHeader *FinalizedHeaderCache, ) (*RequestHandlerEngine, error)
func (*RequestHandlerEngine) Done ¶
func (r *RequestHandlerEngine) Done() <-chan struct{}
func (*RequestHandlerEngine) Process ¶
func (r *RequestHandlerEngine) Process(channel channels.Channel, originID flow.Identifier, event interface{}) error
func (*RequestHandlerEngine) Ready ¶
func (r *RequestHandlerEngine) Ready() <-chan struct{}
type RequestHeap ¶
type RequestHeap struct {
// contains filtered or unexported fields
}
RequestHeap is a special structure that implements engine.MessageStore interface and indexes requests by originator. If request will be sent by same originator then it will replace the old one. Comparing to default FIFO queue this one can contain MAX one request for origin ID. Getting value from queue as well as ejecting is pseudo-random.
func NewRequestHeap ¶
func NewRequestHeap(limit uint) *RequestHeap
type ResponseSender ¶
type ResponseSender interface {
SendResponse(interface{}, flow.Identifier) error
}
type ResponseSenderImpl ¶
type ResponseSenderImpl struct {
// contains filtered or unexported fields
}
func NewResponseSender ¶
func NewResponseSender(con network.Conduit) *ResponseSenderImpl
func (*ResponseSenderImpl) SendResponse ¶
func (r *ResponseSenderImpl) SendResponse(res interface{}, target flow.Identifier) error