summaryrefslogtreecommitdiff
path: root/internal/server/server.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2023-05-28 21:07:55 +0300
committerPaul Buetow <paul@buetow.org>2023-05-28 21:07:55 +0300
commitb1eea606aa22fef720b18017c25f850a5efbf059 (patch)
tree593d4f1e1803dd7e1a4db20db2a1c1ec15fbea3c /internal/server/server.go
parent37fdae0b2a78a80729c8d8bfa69835f554b00120 (diff)
add fan out for client votes
Diffstat (limited to 'internal/server/server.go')
-rw-r--r--internal/server/server.go15
1 files changed, 3 insertions, 12 deletions
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
}