feat app 模块

This commit is contained in:
2026-01-16 22:07:10 +08:00
parent f9592747db
commit 17d4616eb6
6 changed files with 159 additions and 136 deletions

View File

@@ -3,28 +3,32 @@ package app
import (
"fmt"
"git.hlsq.asia/mmorpg/service-common/discover"
"git.hlsq.asia/mmorpg/service-common/discover/common"
"git.hlsq.asia/mmorpg/service-common/log"
"git.hlsq.asia/mmorpg/service-common/module"
"git.hlsq.asia/mmorpg/service-user/config"
"github.com/judwhite/go-svc"
)
type Program struct {
moduleList []Module // 模块列表
}
type Module interface {
init() error
start() error
stop() error
moduleList []module.Module // 模块列表
}
func (p *Program) Init(_ svc.Environment) error {
p.moduleList = append(p.moduleList, &ModuleBase{})
p.moduleList = append(p.moduleList, &ModuleDB{})
base := &ModuleBase{}
if err := base.Init(); err != nil {
return err
}
p.moduleList = append(p.moduleList, base)
p.moduleList = append(p.moduleList, (&module.DB{}).Bind(config.Get().DB))
p.moduleList = append(p.moduleList, &ModuleGrpcServer{})
p.moduleList = append(p.moduleList, (&module.Tracer{}).Bind(config.Get().Metric, common.KeyDiscoverServiceNameUser))
for _, module := range p.moduleList {
if err := module.init(); err != nil {
for i, m := range p.moduleList {
if i == 0 {
continue
}
if err := m.Init(); err != nil {
return err
}
}
@@ -33,8 +37,8 @@ func (p *Program) Init(_ svc.Environment) error {
}
func (p *Program) Start() error {
for _, module := range p.moduleList {
if err := module.start(); err != nil {
for _, m := range p.moduleList {
if err := m.Start(); err != nil {
return err
}
}
@@ -47,8 +51,8 @@ func (p *Program) Start() error {
func (p *Program) Stop() error {
discover.Close()
for i := len(p.moduleList) - 1; i >= 0; i-- {
module := p.moduleList[i]
if err := module.stop(); err != nil {
m := p.moduleList[i]
if err := m.Stop(); err != nil {
log.Errorf("module stop error: %v", err)
}
}

View File

@@ -2,6 +2,7 @@ package app
import (
"git.hlsq.asia/mmorpg/service-common/log"
"git.hlsq.asia/mmorpg/service-common/module"
"git.hlsq.asia/mmorpg/service-common/utils"
"git.hlsq.asia/mmorpg/service-user/config"
"math/rand"
@@ -11,7 +12,7 @@ import (
type ModuleBase struct {
}
func (p *ModuleBase) init() error {
func (m *ModuleBase) Init() error {
// 配置
if err := config.LoadConfig(); err != nil {
return err
@@ -24,10 +25,14 @@ func (p *ModuleBase) init() error {
return nil
}
func (p *ModuleBase) start() error {
func (m *ModuleBase) Start() error {
return nil
}
func (p *ModuleBase) stop() error {
func (m *ModuleBase) Stop() error {
return nil
}
func (m *ModuleBase) Bind(_ ...any) module.Module {
return m
}

View File

@@ -1,23 +0,0 @@
package app
import (
"git.hlsq.asia/mmorpg/service-common/db"
"git.hlsq.asia/mmorpg/service-user/config"
)
// ModuleDB 数据库模块
type ModuleDB struct {
dbModule *db.ModuleDB
}
func (p *ModuleDB) init() error {
return p.dbModule.Init(config.Get().DB)
}
func (p *ModuleDB) start() error {
return nil
}
func (p *ModuleDB) stop() error {
return p.dbModule.Stop()
}

View File

@@ -1,6 +1,7 @@
package app
import (
"git.hlsq.asia/mmorpg/service-common/module"
"git.hlsq.asia/mmorpg/service-common/net/grpc/service"
"git.hlsq.asia/mmorpg/service-user/config"
"git.hlsq.asia/mmorpg/service-user/internal/grpc_server"
@@ -11,17 +12,21 @@ type ModuleGrpcServer struct {
server service.IService
}
func (m *ModuleGrpcServer) init() error {
func (m *ModuleGrpcServer) Init() error {
return nil
}
func (m *ModuleGrpcServer) start() error {
func (m *ModuleGrpcServer) Start() error {
m.server = grpc_server.NewServer(config.Get().Serve.Grpc.TTL)
m.server.Init(config.Get().Serve.Grpc.Address, config.Get().Serve.Grpc.Port)
return nil
}
func (m *ModuleGrpcServer) stop() error {
func (m *ModuleGrpcServer) Stop() error {
m.server.Close()
return nil
}
func (m *ModuleGrpcServer) Bind(_ ...any) module.Module {
return m
}