93 lines
2.0 KiB
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)
|
|
}
|