Documentation
¶
Index ¶
Constants ¶
const DefaultStartupTimeout = 30 * time.Second
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Engine ¶
type Engine struct {
events.Noop // satisfy protocol events consumer interface
// contains filtered or unexported fields
}
Engine is the epoch manager, which coordinates the lifecycle of other modules and processes that are epoch-dependent. The manager is responsible for spinning up engines when a new epoch is about to start and spinning down engines for an epoch that has ended.
func New ¶
func New( log zerolog.Logger, me module.Local, state protocol.State, pools *epochs.TransactionPools, voter module.ClusterRootQCVoter, factory EpochComponentsFactory, heightEvents events.Heights, ) (*Engine, error)
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) EpochSetupPhaseStarted ¶
EpochSetupPhaseStarted handles the epoch setup phase started protocol event.
func (*Engine) EpochTransition ¶
EpochTransition handles the epoch transition protocol event.
type EpochComponents ¶
type EpochComponents struct {
// contains filtered or unexported fields
}
EpochComponents represents all dependencies for running an epoch.
func (*EpochComponents) Done ¶
func (ec *EpochComponents) Done() <-chan struct{}
Done stops all epoch components.
func (*EpochComponents) Ready ¶
func (ec *EpochComponents) Ready() <-chan struct{}
Ready starts all epoch components.
type EpochComponentsFactory ¶
type EpochComponentsFactory interface {
// Create sets up and instantiates all dependencies for the epoch. It may
// be used either for an ongoing epoch (for example, after a restart) or
// for an epoch that will start soon. It is safe to call multiple times for
// a given epoch counter.
Create(epoch protocol.Epoch) (
state cluster.State,
proposal module.Engine,
sync module.Engine,
hotstuff module.HotStuff,
err error,
)
}
EpochComponentsFactory is responsible for creating epoch-scoped components managed by the epoch manager engine for the given epoch.