Files
galaxy-game/client/loader/service.go
T
2026-03-16 15:48:00 +02:00

35 lines
995 B
Go

package loader
import (
"context"
"time"
)
// backgroundLoop периодически проверяет доступность соединения и наличие новых версий на сервере
func (l *loader) backgroundLoop(ctx context.Context, stop <-chan struct{}) {
checkConnTimer := time.NewTimer(checkConnectionTimeout)
checkVersionTimer := time.NewTimer(checkVersionTimeout)
defer func() {
checkConnTimer.Stop()
checkVersionTimer.Stop()
}()
for {
select {
case <-ctx.Done():
l.client.Shutdown()
return
case <-stop:
return
case <-checkConnTimer.C:
isGood := l.connector.CheckConnection()
l.client.OnConnection(isGood)
checkConnTimer.Reset(checkConnectionTimeout)
case <-checkVersionTimer.C:
if err := l.checkAndDownloadPluginVersion(); err != nil {
l.onConnectionError(err) // TODO: separate error types for: onConnectionError / onStorageError / onServiceError
}
checkVersionTimer.Reset(checkVersionTimeout)
}
}
}