update for multiple networks

This commit is contained in:
Matthew R Kasun 2022-01-27 14:48:10 -05:00
parent 513f85ede7
commit 4ccce6bac5

View file

@ -261,17 +261,34 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) {
// MonitorKeepalive - checks time last server keepalive received. If more than 3+ minutes, notify and resubscribe
func MonitorKeepalive(ctx context.Context, client mqtt.Client, cfg *config.ClientConfig) {
var id string
lastUpdate := time.Now()
for _, servAddr := range cfg.NetworkSettings.DefaultServerAddrs {
if servAddr.IsLeader {
id = servAddr.ID
}
}
for {
select {
case <-ctx.Done():
return
case <-time.After(time.Second * 150):
if time.Since(lastUpdate) < time.Second*200 { // more than 3+ minutes
if time.Since(lastUpdate) > time.Second*200 { // more than 3+ minutes
Resubscribe(client, cfg)
}
case <-keepalive:
lastUpdate = time.Now()
case serverID := <-keepalive:
if serverID != id {
// not my server, put back
if cfg.DebugOn {
ncutils.Log("Monitor keepalive received wrong message on channel, putting back")
}
keepalive <- serverID
} else {
lastUpdate = time.Now()
if cfg.DebugOn {
ncutils.Log("updating checking time for" + cfg.Network)
}
}
}
}
}