package internal import ( "context" "log" "log/syslog" "codeberg.org/snonux/gorum/internal/client" "codeberg.org/snonux/gorum/internal/config" "codeberg.org/snonux/gorum/internal/notifier" "codeberg.org/snonux/gorum/internal/quorum" "codeberg.org/snonux/gorum/internal/server" ) func Run(ctx context.Context, configFile string, loopIntervalS int64) error { conf, err := config.NewFromConfigFile(configFile) if err != nil { return err } if loopIntervalS > 0 { conf.LoopIntervalS = loopIntervalS } if conf.LogToSyslog { syslogWriter, err := syslog.New(syslog.LOG_DAEMON, "gorum") if err != nil { return err } log.SetOutput(syslogWriter) } log.Println("Starting everything up!") quo := quorum.New(conf) myVoteCh, scoreCh := quo.Start(ctx) server.Start(ctx, conf, quo) client.Start(ctx, conf, myVoteCh) notifier.Start(ctx, conf, scoreCh) <-ctx.Done() log.Println("Good bye and have a nice day!") return nil }