Zinx框架学习 - 全局配置

文章描述了在ZinxV0.3中如何实现全局配置,包括创建一个名为GlobalObj的结构体来存储框架参数,提供init方法初始化并加载配置文件zinx.json。此外,展示了如何从json配置文件中读取用户自定义参数,并在Server初始化时使用这些全局配置。
摘要由CSDN通过智能技术生成

Zinx - V0.3 全局配置

  • 为了减少大频率修改参数的麻烦,接来下需要对zinx增加配置模块和全局获取zinx参数的对象

全局配置实现思路

代码实现

  • 创建全局参数文件

        首先义一个GlobalObj对象用来存储一切有关Zinx框架的全局参数,供其他模块使用,一些参数是可以通过zinx.json由用户进行配置。

        因为GlobalObj是供全局使用的,所以要定义一个全局的对外Globalobj,能够让其他模块通过Globalobj对象访问数据。

        然后我们提供一个init()方法,目的是初始化GlobalObj对象,和加载服务端应用配置文件conf/zinx.json

package utils

import (
	"encoding/json"
	"io/ioutil"
	"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框架数据包的最大值
}

//定义一个全局的对外Globalobj
var GlobalObject *GlobalObj

//从 zinx.json去加载用于自定义的参数
func (g *GlobalObj) Reload() {
	data, err := ioutil.ReadFile("conf/zinx.json")
	if err != nil {
		panic(err)
	}
	//将json文件数据解析到struct中
	err = json.Unmarshal(data, &GlobalObject)
	if err != nil {
		panic(err)
	}
}

//提供一个init方法,初始化当前的GlobalObject
func init() {
	//如果配置文件没有加载,默认的值
	GlobalObject = &GlobalObj{
		Name:           "ZinxServerApp",
		Version:        "V0.4",
		TcpPort:        8999,
		Host:           "0.0.0.0",
		MaxConn:        1000,
		MaxPackageSize: 4096,
	}

	//应该尝试从conf/zinx.json去加载一些用户自定义的参数
	GlobalObject.Reload()
}

  • json配置文件
{
  "Name":"zinx v0.4 demoServerApp",
  "Host": "127.0.0.1",
  "TcpPort":7777,
  "MaxConn":3
}
  • 硬参数替换与Server初始化参数配置
//初始化Server模块的方法
func NewServer(name string) ziface.IServer {
	s := &Server{
		Name:      utils.GlobalObject.Name,
		IPVersion: "tcp4",
		IP:        utils.GlobalObject.Host,
		Port:      utils.GlobalObject.TcpPort,
		Router:    nil,
	}
	return s
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值