ceremonyclient/consensus/pacemaker/proposal_timing.go
2025-10-31 13:07:12 -05:00

37 lines
1000 B
Go

package pacemaker
import (
"time"
"source.quilibrium.com/quilibrium/monorepo/consensus"
"source.quilibrium.com/quilibrium/monorepo/consensus/models"
)
// StaticProposalDurationProvider is a consensus.ProposalDurationProvider which
// provides a static ProposalDuration. The constant dur represents the time to
// produce and broadcast the proposal (ProposalDuration), NOT the time for the
// entire rank (RankDuration).
type StaticProposalDurationProvider struct {
dur time.Duration
}
var _ consensus.ProposalDurationProvider = (*StaticProposalDurationProvider)(nil)
func NewStaticProposalDurationProvider(
dur time.Duration,
) StaticProposalDurationProvider {
return StaticProposalDurationProvider{dur: dur}
}
func (p StaticProposalDurationProvider) TargetPublicationTime(
_ uint64,
timeRankEntered time.Time,
_ models.Identity,
) time.Time {
return timeRankEntered.Add(p.dur)
}
func NoProposalDelay() StaticProposalDurationProvider {
return NewStaticProposalDurationProvider(0)
}