feat: move main task logic to runtime package

This commit is contained in:
Gitea
2022-08-23 20:34:47 +08:00
committed by Jason Song
parent aa765ea4d0
commit c5edbbd004
4 changed files with 277 additions and 215 deletions

43
engine/engine.go Normal file
View File

@ -0,0 +1,43 @@
package engine
import (
"context"
"fmt"
"time"
log "github.com/sirupsen/logrus"
)
// Start start docker engine api loop
func Start(ctx context.Context) error {
engine, err := New()
if err != nil {
return err
}
count := 0
for {
err := engine.Ping(ctx)
if err == context.Canceled {
break
}
select {
case <-ctx.Done():
return ctx.Err()
default:
}
if err != nil {
log.WithError(err).
Errorln("cannot ping the docker daemon")
count++
if count == 5 {
return fmt.Errorf("retry connect to docker daemon failed: %d times", count)
}
time.Sleep(time.Second)
} else {
log.Infoln("successfully ping the docker daemon")
break
}
}
return nil
}