Fix retry handling

This commit is contained in:
andig 2021-10-24 15:03:13 +02:00
parent 63e4eb2a6a
commit 97ef6b1a3d
2 changed files with 15 additions and 11 deletions

View file

@ -70,12 +70,14 @@ func (d *dumper) Dump(name string, v interface{}) {
// wait up to 1m for the vehicle to wakeup
start := time.Now()
for soc, err = v.SoC(); err != nil && errors.Is(err, api.ErrMustRetry); {
if time.Since(start) > time.Minute {
err = api.ErrTimeout
} else {
fmt.Fprint(w, ".")
time.Sleep(3 * time.Second)
for err = api.ErrMustRetry; err != nil && errors.Is(err, api.ErrMustRetry); {
if soc, err = v.SoC(); err != nil {
if time.Since(start) > time.Minute {
err = api.ErrTimeout
} else {
fmt.Fprint(w, ".")
time.Sleep(3 * time.Second)
}
}
}

View file

@ -80,11 +80,13 @@ func main() {
var err error
start := time.Now()
for soc, err = v.SoC(); err != nil && matchesError(err, api.ErrMustRetry); {
if time.Since(start) > time.Minute {
err = api.ErrTimeout
} else {
time.Sleep(5 * time.Second)
for err = api.ErrMustRetry; err != nil && matchesError(err, api.ErrMustRetry); {
if soc, err = v.SoC(); err != nil {
if time.Since(start) > time.Minute {
err = api.ErrTimeout
} else {
time.Sleep(5 * time.Second)
}
}
}