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/data/entity"
|
||||||
"blazing/common/socket/cmd"
|
"blazing/common/socket/cmd"
|
||||||
"blazing/common/socket/handler"
|
"blazing/common/socket/handler"
|
||||||
|
"blazing/cool"
|
||||||
"blazing/logic/service"
|
"blazing/logic/service"
|
||||||
|
|
||||||
"bytes"
|
"bytes"
|
||||||
@@ -12,6 +13,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
|
"github.com/gogf/gf/v2/os/gcmd"
|
||||||
"github.com/gogf/gf/v2/os/glog"
|
"github.com/gogf/gf/v2/os/glog"
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
"github.com/gogf/gf/v2/util/gconv"
|
||||||
"github.com/lunixbochs/struc"
|
"github.com/lunixbochs/struc"
|
||||||
@@ -37,7 +39,8 @@ func parseCmd[T any](a T, data []byte) T {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func init() { //默认初始化扫描
|
func init() { //默认初始化扫描
|
||||||
|
// 解析命令行参数
|
||||||
|
cool.Config.PortBL = gcmd.GetOpt("port", "1").Uint32()
|
||||||
// 获取对象的反射值和类型
|
// 获取对象的反射值和类型
|
||||||
value := reflect.ValueOf(maincontroller)
|
value := reflect.ValueOf(maincontroller)
|
||||||
|
|
||||||
@@ -54,23 +57,21 @@ func init() { //默认初始化扫描
|
|||||||
methodValue := value.MethodByName(method.Name)
|
methodValue := value.MethodByName(method.Name)
|
||||||
methodValue.Type().NumIn()
|
methodValue.Type().NumIn()
|
||||||
var func_cmd cmd.EnumCommandID
|
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))
|
func_cmd = getcmd(methodValue.Type().In(0))
|
||||||
if !cmd.Isexist(cmd.CommandID, cmd.EnumCommandID(func_cmd)) {
|
if !cmd.Isexist(cmd.CommandID, cmd.EnumCommandID(func_cmd)) {
|
||||||
fmt.Println("ID方法存在cmd未注册", 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)))
|
// fmt.Println(methodValue.Interface().(func(gnet.Conn, handler.TomeeHeader)))
|
||||||
_, ok := core.Maincmdcache.LoadOrStore(func_cmd, methodValue) //TODO 待实现对不同用户初始化方法以取消全局cmdcache
|
_, ok := core.Maincmdcache.LoadOrStore(func_cmd, methodValue) //TODO 待实现对不同用户初始化方法以取消全局cmdcache
|
||||||
|
|
||||||
@@ -79,6 +80,7 @@ func init() { //默认初始化扫描
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getcmd(t reflect.Type) cmd.EnumCommandID {
|
func getcmd(t reflect.Type) cmd.EnumCommandID {
|
||||||
// 处理指针类型
|
// 处理指针类型
|
||||||
if t.Kind() == reflect.Ptr {
|
if t.Kind() == reflect.Ptr {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import (
|
|||||||
|
|
||||||
_ "blazing/contrib/drivers/pgsql"
|
_ "blazing/contrib/drivers/pgsql"
|
||||||
|
|
||||||
"github.com/gogf/gf/v2/os/gcmd"
|
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
"github.com/gogf/gf/v2/util/gconv"
|
||||||
|
|
||||||
"blazing/common/socket"
|
"blazing/common/socket"
|
||||||
@@ -30,8 +29,7 @@ func signalHandlerForMain(sig os.Signal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
// 解析命令行参数
|
|
||||||
cool.Config.PortBL = gcmd.GetOpt("port", "1").Uint32()
|
|
||||||
if cool.IsRedisMode {
|
if cool.IsRedisMode {
|
||||||
go cool.ListenFunc(gctx.New())
|
go cool.ListenFunc(gctx.New())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package cmd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
"blazing/cool"
|
"blazing/cool"
|
||||||
|
|
||||||
@@ -25,7 +26,9 @@ var (
|
|||||||
|
|
||||||
s := g.Server()
|
s := g.Server()
|
||||||
s.SetServerAgent(cool.Config.Name)
|
s.SetServerAgent(cool.Config.Name)
|
||||||
|
runtime.SetMutexProfileFraction(1) // (非必需)开启对锁调用的跟踪
|
||||||
|
runtime.SetBlockProfileRate(1) // (非必需)开启对阻塞操作的跟踪
|
||||||
|
s.EnablePProf()
|
||||||
// 如果存在 data/cool-admin-vue/dist 目录,则设置为主目录
|
// 如果存在 data/cool-admin-vue/dist 目录,则设置为主目录
|
||||||
if gfile.IsDir("public") {
|
if gfile.IsDir("public") {
|
||||||
s.SetServerRoot("public")
|
s.SetServerRoot("public")
|
||||||
|
|||||||
@@ -2,17 +2,10 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
|
||||||
|
|
||||||
_ "blazing/contrib/drivers/pgsql"
|
_ "blazing/contrib/drivers/pgsql"
|
||||||
|
|
||||||
"github.com/panjf2000/gnet/v2"
|
|
||||||
|
|
||||||
"blazing/common/core"
|
|
||||||
"blazing/common/socket"
|
|
||||||
"blazing/common/socket/handler"
|
|
||||||
_ "blazing/contrib/files/local"
|
_ "blazing/contrib/files/local"
|
||||||
"blazing/logic/service/login"
|
|
||||||
|
|
||||||
// Minio,按需启用
|
// Minio,按需启用
|
||||||
// _ "blazing/contrib/files/minio"
|
// _ "blazing/contrib/files/minio"
|
||||||
@@ -35,22 +28,3 @@ func main() {
|
|||||||
// go Start(cool.Config.Port)
|
// go Start(cool.Config.Port)
|
||||||
cmd.Main.Run(gctx.New())
|
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