From 9420b685b2b1cb9666ce1c4d59300061fec37c22 Mon Sep 17 00:00:00 2001 From: boyce Date: Thu, 31 Jan 2019 18:15:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A8=A1=E5=9D=97=E4=B8=8E?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E9=97=B4=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Test/main.go | 2 ++ service/Service.go | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Test/main.go b/Test/main.go index 5fe039f..07140a5 100644 --- a/Test/main.go +++ b/Test/main.go @@ -99,6 +99,8 @@ func (ws *CTest) OnRun() error { pTmpModule := ws.GetModuleByType(1) pTmpModuleTest := pTmpModule.(*CTestModule) pTmpModuleTest.DoSomething() + pservice := testModule.GetOwnerService() + fmt.Printf("%T", pservice) return nil } diff --git a/service/Service.go b/service/Service.go index eddb890..2b4f972 100644 --- a/service/Service.go +++ b/service/Service.go @@ -24,10 +24,12 @@ type IBaseModule interface { OnRun() error AddModule(module IBaseModule) bool GetModuleByType(moduleType uint32) IBaseModule + GetOwnerService() IService + SetOwnerService(iservice IService) } type IService interface { - Init(Iservice interface{}, servicetype int) error + Init(Iservice IService, servicetype int) error Run(service IService, exit chan bool, pwaitGroup *sync.WaitGroup) error OnInit() error OnEndInit() error @@ -76,6 +78,8 @@ type BaseService struct { type BaseModule struct { moduleType uint32 mapModule map[uint32]IBaseModule + + ownerService IService } func (slf *BaseService) GetServiceId() int { @@ -115,8 +119,9 @@ func (slf *BaseService) OnRemoveService(iservice IService) { return } -func (slf *BaseService) Init(Iservice interface{}, servicetype int) error { - slf.servicename = fmt.Sprintf("%T", Iservice) +func (slf *BaseService) Init(iservice IService, servicetype int) error { + slf.ownerService = iservice + slf.servicename = fmt.Sprintf("%T", iservice) parts := strings.Split(slf.servicename, ".") if len(parts) != 2 { err := fmt.Errorf("BaseService.Init: service name is error: %q", slf.servicename) @@ -185,6 +190,8 @@ func (slf *BaseModule) AddModule(module IBaseModule) bool { return false } + module.SetOwnerService(slf.ownerService) + if slf.mapModule == nil { slf.mapModule = make(map[uint32]IBaseModule) } @@ -213,3 +220,11 @@ func (slf *BaseModule) OnInit() error { func (slf *BaseModule) OnRun() error { return fmt.Errorf("not implement OnRun moduletype %d ", slf.GetModuleType()) } + +func (slf *BaseModule) GetOwnerService() IService { + return slf.ownerService +} + +func (slf *BaseModule) SetOwnerService(iservice IService) { + slf.ownerService = iservice +}