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.
release-3.2
Anthony Romano 2017-03-30 11:41:36 -07:00
parent d1ae4cd5bd
commit 80c1b9c13a
1 changed files with 10 additions and 0 deletions

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 {