zinx/utils/globalobj.go

93 lines
2.0 KiB
Go

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)
}