package utils import ( "encoding/json" "fmt" "os" "zinx/ziface" ) /** 存储有关zinx 框架的全局参数 , 供其他模块使用 参数可以通过 zinx.json 由用户配置 */ type GlobalObj struct { /** Server */ TcpServer ziface.IServer //当前zinx 全局的server 对象 Host string //当前服务器监听的ip TcpPort int //当前服务器监听的端口 Name string //当前服务的名称 /** zinx */ Version string //当前zinx 的版本号 MaxConn int //当前服务器允许的最大连接数 MaxPackageSize uint32 //当前zinx 框架数据包的最大值 WokePoolSize uint32 //当前业务工作worker 池的goroutine 数量 MaxWorkerTaskLen uint32 // zinx 框架最多允许用户开辟多少个worker (限定条件) } /* GlobalObject 定义一个全局对外的globalobj 对象 */ var GlobalObject *GlobalObj /* 提供一个init方法, 初始化 GlobalObject */ func init() { //默认配置 GlobalObject = &GlobalObj{ Name: "ZinxServer", Host: "0.0.0.0", Version: "V0.4", TcpPort: 8999, MaxConn: 1000, MaxPackageSize: 4096, WokePoolSize: 10, MaxWorkerTaskLen: 1024, } //尝试从配置文件加载 config/zinx.json GlobalObject.Reload() } /* Reload 从config/zinx.json 中加载用户配置 */ func (g *GlobalObj) Reload() { data, err := os.ReadFile("conf/zinx.json") if err != nil { fmt.Println("conf/zinx.json 读取错误!") panic(err) } err = json.Unmarshal(data, &GlobalObject) if err != nil { fmt.Println("conf/zinx.json 解析错误!") panic(err) } // 打开 JSON 文件 //file, err := os.Open("conf/zinx.json") //if err != nil { // fmt.Println(err) // return //} //defer file.Close() //// 解码 JSON 数据 //decoder := json.NewDecoder(file) //err = decoder.Decode(&GlobalObject) //if err != nil { // fmt.Println(err) // return //} //fmt.Println(GlobalObject) }