feat 模块增加after start
This commit is contained in:
11
app/app.go
11
app/app.go
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
13
app/base.go
13
app/base.go
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module git.hlsq.asia/mmorpg/service-robot
|
||||
go 1.24.0
|
||||
|
||||
require (
|
||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260117160658-22d48542a852
|
||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260120040718-1edebb439c58
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/judwhite/go-svc v1.2.1
|
||||
google.golang.org/protobuf v1.36.10
|
||||
|
||||
4
go.sum
4
go.sum
@@ -1,7 +1,7 @@
|
||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260117160658-22d48542a852 h1:ehZ54MgGL3CO7KKDPxybFabIXxiQud1TGMcKjrSTcnw=
|
||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260117160658-22d48542a852/go.mod h1:Dazg+4woCv9Jk7jgT2qUSGWhZOXx/0WYfJO+FCUDyhw=
|
||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260120040718-1edebb439c58 h1:Bgn3rrISGqzyNA4ax5o4tiTy3tK3QcM/+tCr80fOBhE=
|
||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260120040718-1edebb439c58/go.mod h1:Dazg+4woCv9Jk7jgT2qUSGWhZOXx/0WYfJO+FCUDyhw=
|
||||
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
||||
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
|
||||
Reference in New Issue
Block a user