From b1eea606aa22fef720b18017c25f850a5efbf059 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 28 May 2023 21:07:55 +0300 Subject: add fan out for client votes --- internal/server/server.go | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'internal/server/server.go') diff --git a/internal/server/server.go b/internal/server/server.go index 088e36c..dc1fd90 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -10,11 +10,11 @@ import ( "codeberg.org/snonux/gorum/internal/vote" ) -func Start(ctx context.Context, conf config.Config) { +func Start(ctx context.Context, conf config.Config, quo quorum.Quorum) { go func() { for { log.Println("Starting server") - if err := run(ctx, conf); err != nil { + if err := run(ctx, conf, quo); err != nil { log.Println(err) } @@ -27,26 +27,17 @@ func Start(ctx context.Context, conf config.Config) { }() } -func run(ctx context.Context, conf config.Config) error { +func run(ctx context.Context, conf config.Config, quo quorum.Quorum) error { serverCtx, cancel := context.WithCancel(ctx) defer cancel() ch := make(chan vote.Vote) - quo := make(quorum.Quorum) go func() { for { select { case vote := <-ch: quo.Vote(vote) - winner, err := quo.Winner(conf) - if err != nil { - log.Println(err.Error()) - continue - } - log.Printf("The current leader node is %s", winner) - case <-time.After(vote.Expiry): - quo.Expire() case <-serverCtx.Done(): return } -- cgit v1.2.3