service的初始化与运行按照Setup优化级

This commit is contained in:
boyce
2019-03-22 13:40:22 +08:00
parent 0d28940ef8
commit 9e75434152

View File

@@ -13,13 +13,15 @@ type IServiceManager interface {
} }
type CServiceManager struct { type CServiceManager struct {
genserviceid int genserviceid int
localserviceMap map[string]IService localserviceMap map[string]IService
logger ILogger logger ILogger
orderLocalService []string
} }
func (slf *CServiceManager) Setup(s IService) bool { func (slf *CServiceManager) Setup(s IService) bool {
slf.localserviceMap[s.GetServiceName()] = s slf.localserviceMap[s.GetServiceName()] = s
slf.orderLocalService = append(slf.orderLocalService, s.GetServiceName())
return true return true
} }
@@ -56,8 +58,8 @@ func (slf *CServiceManager) Init(logger ILogger, exit chan bool, pwaitGroup *syn
} }
func (slf *CServiceManager) Start() bool { func (slf *CServiceManager) Start() bool {
for _, sname := range slf.orderLocalService {
for _, s := range slf.localserviceMap { s := slf.FindService(sname)
err := s.(IModule).OnInit() err := s.(IModule).OnInit()
if err != nil { if err != nil {
GetLogger().Printf(LEVER_ERROR, "Init module %T id is %d is fail,reason:%v...", s.(IModule), s.(IModule).GetModuleId(), err) GetLogger().Printf(LEVER_ERROR, "Init module %T id is %d is fail,reason:%v...", s.(IModule), s.(IModule).GetModuleId(), err)
@@ -66,7 +68,8 @@ func (slf *CServiceManager) Start() bool {
s.(IModule).getBaseModule().OnInit() s.(IModule).getBaseModule().OnInit()
} }
for _, s := range slf.localserviceMap { for _, sname := range slf.orderLocalService {
s := slf.FindService(sname)
go (s.(IModule)).RunModule(s.(IModule)) go (s.(IModule)).RunModule(s.(IModule))
} }