feat(app): update
This commit is contained in:
46
pkg/starter/starter.go
Normal file
46
pkg/starter/starter.go
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package starter
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
|
"gitea.ddegame.cn/open/servicebase/pkg/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
type IStarter interface {
|
||||||
|
Init() error
|
||||||
|
}
|
||||||
|
|
||||||
|
type Starter struct {
|
||||||
|
instanceList []IStarter
|
||||||
|
instanceCount int
|
||||||
|
errs []error
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewStarter() *Starter {
|
||||||
|
return &Starter{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Starter) With(instance IStarter) *Starter {
|
||||||
|
s.instanceList = append(s.instanceList, instance)
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Starter) Run() {
|
||||||
|
for _, instance := range s.instanceList {
|
||||||
|
if err := instance.Init(); err != nil {
|
||||||
|
s.errs = append(s.errs, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(s.errs) > 0 {
|
||||||
|
panic(fmt.Sprintf("some errors: %v", s.errs))
|
||||||
|
}
|
||||||
|
log.Info("service all up")
|
||||||
|
ch := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT)
|
||||||
|
sig := <-ch
|
||||||
|
log.InfoF("api server Got %s signal. Aborting...\n", sig)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user