concurrency: support resuming elections if leadership already held

If a client already knows it holds leadership, let it create an
election object with its leadership information.
This commit is contained in:
Anthony Romano 2017-03-30 11:41:36 -07:00
parent d1ae4cd5bd
commit 80c1b9c13a

View File

@ -45,6 +45,16 @@ func NewElection(s *Session, pfx string) *Election {
return &Election{session: s, keyPrefix: pfx + "/"}
}
// ResumeElection initializes an election with a known leader.
func ResumeElection(s *Session, pfx string, leaderKey string, leaderRev int64) *Election {
return &Election{
session: s,
leaderKey: leaderKey,
leaderRev: leaderRev,
leaderSession: s,
}
}
// Campaign puts a value as eligible for the election. It blocks until
// it is elected, an error occurs, or the context is cancelled.
func (e *Election) Campaign(ctx context.Context, val string) error {