feat 模块增加after start

This commit is contained in:
2026-01-20 12:11:28 +08:00
parent c293f9688a
commit 95ccbb0676
6 changed files with 21 additions and 30 deletions

View File

@@ -6,6 +6,7 @@ import (
"git.hlsq.asia/mmorpg/service-common/module"
"git.hlsq.asia/mmorpg/service-robot/config"
"github.com/judwhite/go-svc"
"sync"
)
type Program struct {
@@ -34,8 +35,16 @@ func (p *Program) Init(_ svc.Environment) error {
}
func (p *Program) Start() error {
ready := &sync.WaitGroup{}
ready.Add(len(p.moduleList))
for _, m := range p.moduleList {
if err := m.Start(); err != nil {
if err := m.Start(ready); err != nil {
return err
}
}
ready.Wait()
for _, m := range p.moduleList {
if err := m.AfterStart(); err != nil {
return err
}
}

View File

@@ -10,6 +10,7 @@ import (
// ModuleBase 基础模块,或者一些零散的模块
type ModuleBase struct {
module.DefaultModule
}
func (m *ModuleBase) Init() error {
@@ -24,15 +25,3 @@ func (m *ModuleBase) Init() error {
utils.InitSnowflake(int64(rand.Intn(1000)))
return nil
}
func (m *ModuleBase) Start() error {
return nil
}
func (m *ModuleBase) Stop() error {
return nil
}
func (m *ModuleBase) Bind(_ ...any) module.Module {
return m
}

View File

@@ -12,6 +12,7 @@ import (
// ModulePprof pprof模块
type ModulePprof struct {
module.DefaultModule
wg *sync.WaitGroup
server *http.Server
}
@@ -21,13 +22,14 @@ func (m *ModulePprof) Init() error {
return nil
}
func (m *ModulePprof) Start() error {
func (m *ModulePprof) Start(ready *sync.WaitGroup) error {
m.wg.Add(1)
go func() {
defer m.wg.Done()
m.server = &http.Server{
Addr: "localhost:6060",
}
ready.Done()
if err := m.server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Errorf("pprof server failed: %v", err.Error())
}
@@ -43,7 +45,3 @@ func (m *ModulePprof) Stop() error {
m.wg.Wait()
return nil
}
func (m *ModulePprof) Bind(_ ...any) module.Module {
return m
}

View File

@@ -5,10 +5,12 @@ import (
"git.hlsq.asia/mmorpg/service-common/module"
"git.hlsq.asia/mmorpg/service-robot/config"
"git.hlsq.asia/mmorpg/service-robot/internal/ws"
"sync"
)
// ModuleWebsocket Websocket客户端模块
type ModuleWebsocket struct {
module.DefaultModule
manager *ws.Manager
}
@@ -26,15 +28,8 @@ func (m *ModuleWebsocket) Init() error {
return nil
}
func (m *ModuleWebsocket) Start() error {
func (m *ModuleWebsocket) Start(ready *sync.WaitGroup) error {
m.manager.Start()
ready.Done()
return nil
}
func (m *ModuleWebsocket) Stop() error {
return nil
}
func (m *ModuleWebsocket) Bind(_ ...any) module.Module {
return m
}