You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.3 KiB

  1. package utils
  2. import (
  3. "encoding/json"
  4. "io/ioutil"
  5. "zinx/ziface"
  6. )
  7. /*
  8. 存储一切有关Zinx框架的全局参数供其他模块使用
  9. 一些参数也可以通过 用户根据 zinx.json来配置
  10. */
  11. type GlobalObj struct {
  12. /*
  13. Server
  14. */
  15. TcpServer ziface.IServer //当前Zinx的全局Server对象
  16. Host string //当前服务器主机IP
  17. TcpPort int //当前服务器主机监听端口号
  18. Name string //当前服务器名称
  19. /*
  20. Zinx
  21. */
  22. Version string //当前Zinx版本号
  23. MaxPacketSize uint32 //都需数据包的最大值
  24. MaxConn int //当前服务器主机允许的最大链接个数
  25. }
  26. /*
  27. 定义一个全局的对象
  28. */
  29. var GlobalObject *GlobalObj
  30. //读取用户的配置文件
  31. func (g *GlobalObj) Reload() {
  32. data, err := ioutil.ReadFile("conf/zinx.json")
  33. if err != nil {
  34. panic(err)
  35. }
  36. //将json数据解析到struct中
  37. //fmt.Printf("json :%s\n", data)
  38. err = json.Unmarshal(data, &GlobalObject)
  39. if err != nil {
  40. panic(err)
  41. }
  42. }
  43. /*
  44. 提供init方法默认加载
  45. */
  46. func init() {
  47. //初始化GlobalObject变量,设置一些默认值
  48. GlobalObject = &GlobalObj{
  49. Name: "ZinxServerApp",
  50. Version: "V0.4",
  51. TcpPort: 7777,
  52. Host: "0.0.0.0",
  53. MaxConn: 12000,
  54. MaxPacketSize:4096,
  55. }
  56. //从配置文件中加载一些用户配置的参数
  57. GlobalObject.Reload()
  58. }