Reuse backoff waiting code for initial proxy MCU connection.

This commit is contained in:
Joachim Bauch 2024-02-27 16:41:57 +01:00
parent bde0b08eb1
commit 1a8444ca71
No known key found for this signature in database
GPG key ID: 77C1D22D53E15F02

View file

@ -233,14 +233,15 @@ func (s *ProxyServer) Start(config *goconf.ConfigFile) error {
mcuType = signaling.McuTypeDefault mcuType = signaling.McuTypeDefault
} }
interrupt := make(chan os.Signal, 1) backoff, err := signaling.NewExponentialBackoff(initialMcuRetry, maxMcuRetry)
signal.Notify(interrupt, os.Interrupt) if err != nil {
defer signal.Stop(interrupt) return err
}
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
defer stop()
var err error
var mcu signaling.Mcu var mcu signaling.Mcu
mcuRetry := initialMcuRetry
mcuRetryTimer := time.NewTimer(mcuRetry)
for { for {
switch mcuType { switch mcuType {
case signaling.McuTypeJanus: case signaling.McuTypeJanus:
@ -263,17 +264,10 @@ func (s *ProxyServer) Start(config *goconf.ConfigFile) error {
break break
} }
log.Printf("Could not initialize %s MCU at %s (%s) will retry in %s", mcuType, s.url, err, mcuRetry) log.Printf("Could not initialize %s MCU at %s (%s) will retry in %s", mcuType, s.url, err, backoff.NextWait())
mcuRetryTimer.Reset(mcuRetry) backoff.Wait(ctx)
select { if ctx.Err() != nil {
case <-interrupt:
return fmt.Errorf("Cancelled") return fmt.Errorf("Cancelled")
case <-mcuRetryTimer.C:
// Retry connection
mcuRetry = mcuRetry * 2
if mcuRetry > maxMcuRetry {
mcuRetry = maxMcuRetry
}
} }
} }