feat(logic): 优化命令行参数解析和服务器初始化逻辑
- 将命令行参数解析移至 controller 包的 init 函数中 - 添加 PortBL 配置项判断,实现 login 服务器的条件初始化 - 移除 main 函数中的重复代码 - 在 login 服务器中启用 pprof 性能分析工具 - 删除未使用的 Start 函数和相关代码
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/common/socket/cmd"
|
||||
"blazing/common/socket/handler"
|
||||
"blazing/cool"
|
||||
"blazing/logic/service"
|
||||
|
||||
"bytes"
|
||||
@@ -12,6 +13,7 @@ import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
|
||||
"github.com/gogf/gf/v2/os/gcmd"
|
||||
"github.com/gogf/gf/v2/os/glog"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"github.com/lunixbochs/struc"
|
||||
@@ -37,7 +39,8 @@ func parseCmd[T any](a T, data []byte) T {
|
||||
}
|
||||
|
||||
func init() { //默认初始化扫描
|
||||
|
||||
// 解析命令行参数
|
||||
cool.Config.PortBL = gcmd.GetOpt("port", "1").Uint32()
|
||||
// 获取对象的反射值和类型
|
||||
value := reflect.ValueOf(maincontroller)
|
||||
|
||||
@@ -54,23 +57,21 @@ func init() { //默认初始化扫描
|
||||
methodValue := value.MethodByName(method.Name)
|
||||
methodValue.Type().NumIn()
|
||||
var func_cmd cmd.EnumCommandID
|
||||
//params := []reflect.Value{}
|
||||
//fmt.Println(methodValue.Type().NumIn())
|
||||
// for i := 0; i < methodValue.Type().NumIn(); i++ {
|
||||
|
||||
// ttt := methodValue.Type().In(i)
|
||||
|
||||
// func_cmd = getcmd(ttt)
|
||||
|
||||
// }
|
||||
// /ttt := methodValue.Type().In(0)
|
||||
|
||||
func_cmd = getcmd(methodValue.Type().In(0))
|
||||
if !cmd.Isexist(cmd.CommandID, cmd.EnumCommandID(func_cmd)) {
|
||||
fmt.Println("ID方法存在cmd未注册", func_cmd)
|
||||
|
||||
}
|
||||
if cool.Config.PortBL == 0 && func_cmd > 1000 { //判断login服务器
|
||||
break
|
||||
|
||||
}
|
||||
|
||||
if cool.Config.PortBL != 0 && func_cmd < 1000 { //判断login服务器
|
||||
continue
|
||||
|
||||
}
|
||||
// fmt.Println(methodValue.Interface().(func(gnet.Conn, handler.TomeeHeader)))
|
||||
_, ok := core.Maincmdcache.LoadOrStore(func_cmd, methodValue) //TODO 待实现对不同用户初始化方法以取消全局cmdcache
|
||||
|
||||
@@ -79,6 +80,7 @@ func init() { //默认初始化扫描
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getcmd(t reflect.Type) cmd.EnumCommandID {
|
||||
// 处理指针类型
|
||||
if t.Kind() == reflect.Ptr {
|
||||
|
||||
@@ -10,7 +10,6 @@ import (
|
||||
|
||||
_ "blazing/contrib/drivers/pgsql"
|
||||
|
||||
"github.com/gogf/gf/v2/os/gcmd"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
|
||||
"blazing/common/socket"
|
||||
@@ -30,8 +29,7 @@ func signalHandlerForMain(sig os.Signal) {
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 解析命令行参数
|
||||
cool.Config.PortBL = gcmd.GetOpt("port", "1").Uint32()
|
||||
|
||||
if cool.IsRedisMode {
|
||||
go cool.ListenFunc(gctx.New())
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package cmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"runtime"
|
||||
|
||||
"blazing/cool"
|
||||
|
||||
@@ -25,7 +26,9 @@ var (
|
||||
|
||||
s := g.Server()
|
||||
s.SetServerAgent(cool.Config.Name)
|
||||
|
||||
runtime.SetMutexProfileFraction(1) // (非必需)开启对锁调用的跟踪
|
||||
runtime.SetBlockProfileRate(1) // (非必需)开启对阻塞操作的跟踪
|
||||
s.EnablePProf()
|
||||
// 如果存在 data/cool-admin-vue/dist 目录,则设置为主目录
|
||||
if gfile.IsDir("public") {
|
||||
s.SetServerRoot("public")
|
||||
|
||||
@@ -2,17 +2,10 @@ package main
|
||||
|
||||
import (
|
||||
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
|
||||
_ "blazing/contrib/drivers/pgsql"
|
||||
|
||||
"github.com/panjf2000/gnet/v2"
|
||||
|
||||
"blazing/common/core"
|
||||
"blazing/common/socket"
|
||||
"blazing/common/socket/handler"
|
||||
_ "blazing/contrib/files/local"
|
||||
"blazing/logic/service/login"
|
||||
|
||||
// Minio,按需启用
|
||||
// _ "blazing/contrib/files/minio"
|
||||
@@ -35,22 +28,3 @@ func main() {
|
||||
// go Start(cool.Config.Port)
|
||||
cmd.Main.Run(gctx.New())
|
||||
}
|
||||
|
||||
func Start(port string) {
|
||||
|
||||
head := handler.NewTomeeHandler()
|
||||
head.Callback = recv
|
||||
socket.NewServer(socket.WithPort(gconv.Int(port)), socket.WithCORS(), socket.WithSocketHandler(head)).Start()
|
||||
}
|
||||
|
||||
func recv(c gnet.Conn, data handler.TomeeHeader) {
|
||||
|
||||
ret := login.NewCommendSvrInfo()
|
||||
|
||||
ret.ServerList = login.GetServerInfoList()
|
||||
|
||||
tt := core.Pack(data, ret)
|
||||
//fmt.Println(hex.EncodeToString(tt))
|
||||
c.Write(tt)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user