[TASK] Delay startup until a multiple of the period since zero time (#68)
This commit is contained in:
parent
88975d2566
commit
7f554bd6d6
@ -6,6 +6,7 @@ import (
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/FreifunkBremen/yanic/database"
|
||||
"github.com/FreifunkBremen/yanic/database/all"
|
||||
@ -58,18 +59,26 @@ func main() {
|
||||
nodes.Start()
|
||||
meshviewer.Start(config, nodes)
|
||||
|
||||
if config.Respondd.Enable {
|
||||
collector = respond.NewCollector(connections, nodes, config.Respondd.Interface, config.Respondd.Port)
|
||||
collector.Start(config.Respondd.CollectInterval.Duration)
|
||||
defer collector.Close()
|
||||
}
|
||||
|
||||
if config.Webserver.Enable {
|
||||
log.Println("starting webserver on", config.Webserver.Bind)
|
||||
srv := webserver.New(config.Webserver.Bind, config.Webserver.Webroot)
|
||||
go srv.Close()
|
||||
}
|
||||
|
||||
if config.Respondd.Enable {
|
||||
// Delaying startup to start at a multiple of `duration` since the zero time.
|
||||
if duration := config.Respondd.Synchronize.Duration; duration > 0 {
|
||||
now := time.Now()
|
||||
delay := duration - now.Sub(now.Truncate(duration))
|
||||
log.Printf("delaying %0.1f seconds", delay.Seconds())
|
||||
time.Sleep(delay)
|
||||
}
|
||||
|
||||
collector = respond.NewCollector(connections, nodes, config.Respondd.Interface, config.Respondd.Port)
|
||||
collector.Start(config.Respondd.CollectInterval.Duration)
|
||||
defer collector.Close()
|
||||
}
|
||||
|
||||
// Wait for INT/TERM
|
||||
sigs := make(chan os.Signal, 1)
|
||||
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
@ -1,6 +1,8 @@
|
||||
# Send respondd request to update information
|
||||
[respondd]
|
||||
enable = true
|
||||
# Delay startup until a multiple of the period since zero time
|
||||
synchronize = "1m"
|
||||
# how oftern request per multicast
|
||||
collect_interval = "1m"
|
||||
# on which interface
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
type Config struct {
|
||||
Respondd struct {
|
||||
Enable bool `toml:"enable"`
|
||||
Synchronize Duration `toml:"synchronize"`
|
||||
Interface string `toml:"interface"`
|
||||
Port int `toml:"port"`
|
||||
CollectInterval Duration `toml:"collect_interval"`
|
||||
|
Loading…
Reference in New Issue
Block a user