Browse Source

Zinx-V0.4 增添全局配置

master
aceld 6 years ago
parent
commit
2669cfd050
  1. 65
      utils/globalobj.go
  2. 3
      znet/connection.go
  3. 18
      znet/server.go

65
utils/globalobj.go

@ -0,0 +1,65 @@
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版本号
MaxPacketSize uint32 //都需数据包的最大值
MaxConn int //当前服务器主机允许的最大链接个数
}
/*
定义一个全局的对象
*/
var GlobalObject *GlobalObj
//读取用户的配置文件
func (g *GlobalObj) Reload() {
data, err := ioutil.ReadFile("conf/zinx.json")
if err != nil {
panic(err)
}
//将json数据解析到struct中
//fmt.Printf("json :%s\n", data)
err = json.Unmarshal(data, &GlobalObject)
if err != nil {
panic(err)
}
}
/*
提供init方法默认加载
*/
func init() {
//初始化GlobalObject变量,设置一些默认值
GlobalObject = &GlobalObj{
Name: "ZinxServerApp",
Version: "V0.4",
TcpPort: 7777,
Host: "0.0.0.0",
MaxConn: 12000,
MaxPacketSize:4096,
}
//从配置文件中加载一些用户配置的参数
GlobalObject.Reload()
}

3
znet/connection.go

@ -3,6 +3,7 @@ package znet
import ( import (
"fmt" "fmt"
"net" "net"
"zinx/utils"
"zinx/ziface" "zinx/ziface"
) )
@ -48,7 +49,7 @@ func (c *Connection) StartReader() {
for { for {
//读取我们最大的数据到buf中 //读取我们最大的数据到buf中
buf := make([]byte, 512)
buf := make([]byte, utils.GlobalObject.MaxPacketSize)
_, err := c.Conn.Read(buf) _, err := c.Conn.Read(buf)
if err != nil { if err != nil {
fmt.Println("recv buf err ", err) fmt.Println("recv buf err ", err)

18
znet/server.go

@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"net" "net"
"time" "time"
"zinx/utils"
"zinx/ziface" "zinx/ziface"
) )
@ -24,22 +25,27 @@ type Server struct {
/* /*
创建一个服务器句柄 创建一个服务器句柄
*/ */
func NewServer (name string) ziface.IServer {
func NewServer () ziface.IServer {
utils.GlobalObject.Reload()
s:= &Server { s:= &Server {
Name :name,
Name :utils.GlobalObject.Name,
IPVersion:"tcp4", IPVersion:"tcp4",
IP:"0.0.0.0",
Port:7777,
IP:utils.GlobalObject.Host,
Port:utils.GlobalObject.TcpPort,
Router: nil, Router: nil,
} }
return s return s
} }
//============== 实现 ziface.IServer 里的全部接口方法 ======== //============== 实现 ziface.IServer 里的全部接口方法 ========
//开启网络服务 //开启网络服务
func (s *Server) Start() { func (s *Server) Start() {
fmt.Printf("[START] Server listenner at IP: %s, Port %d, is starting\n", s.IP, s.Port)
fmt.Printf("[START] Server name: %s,listenner at IP: %s, Port %d is starting\n", s.Name, s.IP, s.Port)
fmt.Printf("[Zinx] Version: %s, MaxConn: %d, MaxPacketSize: %d\n",
utils.GlobalObject.Version,
utils.GlobalObject.MaxConn,
utils.GlobalObject.MaxPacketSize)
//开启一个go去做服务端Linster业务 //开启一个go去做服务端Linster业务
go func() { go func() {

Loading…
Cancel
Save