From bb904b962b1971f55d8955a6f1777cccd9356015 Mon Sep 17 00:00:00 2001 From: aceld Date: Fri, 12 Mar 2021 14:18:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E6=B3=A8=E9=87=8A=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/globalobj.go | 11 +++++++++- ziface/iconnection.go | 47 ++++++++++++++++++++++-------------------- ziface/iconnmanager.go | 13 ++++++++++++ ziface/idatapack.go | 13 ++++++++++++ ziface/imessage.go | 13 ++++++++++++ ziface/imsghandler.go | 13 ++++++++++++ ziface/irequest.go | 13 ++++++++++++ ziface/irouter.go | 13 ++++++++++++ ziface/iserver.go | 42 ++++++++++++++++++++----------------- zlog/stdzlog.go | 9 ++++++++ zlog/zlogger.go | 39 ++++++++++++++++++----------------- zlog/zlogger_test.go | 38 +++++++++++++++++----------------- 12 files changed, 184 insertions(+), 80 deletions(-) diff --git a/utils/globalobj.go b/utils/globalobj.go index 9ec697d..6110263 100644 --- a/utils/globalobj.go +++ b/utils/globalobj.go @@ -1,3 +1,12 @@ +// Package utils 提供zinx相关工具类函数 +// 包括: +// 全局配置 +// 配置文件加载 +// +// 当前文件描述: +// @Title globalobj.go +// @Description 相关配置文件定义及加载方式 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package utils import ( @@ -114,6 +123,6 @@ func init() { LogDebugClose: false, } - //从配置文件中加载一些用户配置的参数 + //NOTE: 从配置文件中加载一些用户配置的参数 GlobalObject.Reload() } diff --git a/ziface/iconnection.go b/ziface/iconnection.go index 22b268b..66a6807 100644 --- a/ziface/iconnection.go +++ b/ziface/iconnection.go @@ -1,3 +1,16 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title iconnection.go +// @Description 全部连接相关方法声明 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface import ( @@ -7,28 +20,18 @@ import ( //定义连接接口 type IConnection interface { - //启动连接,让当前连接开始工作 - Start() - //停止连接,结束当前连接状态M - Stop() - //返回ctx,用于用户自定义的go程获取连接退出状态 - Context() context.Context - //从当前连接获取原始的socket TCPConn - GetTCPConnection() *net.TCPConn - //获取当前连接ID - GetConnID() uint32 - //获取远程客户端地址信息 - RemoteAddr() net.Addr + Start() //启动连接,让当前连接开始工作 + Stop() //停止连接,结束当前连接状态M + Context() context.Context //返回ctx,用于用户自定义的go程获取连接退出状态 - //直接将Message数据发送数据给远程的TCP客户端(无缓冲) - SendMsg(msgID uint32, data []byte) error - //直接将Message数据发送给远程的TCP客户端(有缓冲) - SendBuffMsg(msgID uint32, data []byte) error + GetTCPConnection() *net.TCPConn //从当前连接获取原始的socket TCPConn + GetConnID() uint32 //获取当前连接ID + RemoteAddr() net.Addr //获取远程客户端地址信息 - //设置链接属性 - SetProperty(key string, value interface{}) - //获取链接属性 - GetProperty(key string) (interface{}, error) - //移除链接属性 - RemoveProperty(key string) + SendMsg(msgID uint32, data []byte) error //直接将Message数据发送数据给远程的TCP客户端(无缓冲) + SendBuffMsg(msgID uint32, data []byte) error //直接将Message数据发送给远程的TCP客户端(有缓冲) + + SetProperty(key string, value interface{}) //设置链接属性 + GetProperty(key string) (interface{}, error) //获取链接属性 + RemoveProperty(key string) //移除链接属性 } diff --git a/ziface/iconnmanager.go b/ziface/iconnmanager.go index 23bef5a..577d9fd 100644 --- a/ziface/iconnmanager.go +++ b/ziface/iconnmanager.go @@ -1,3 +1,16 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title iconnmanager.go +// @Description 连接管理相关,包括添加、删除、通过一个连接ID获得连接对象,当前连接数量、清空全部连接等方法 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface /* diff --git a/ziface/idatapack.go b/ziface/idatapack.go index 7b078af..e9841f6 100644 --- a/ziface/idatapack.go +++ b/ziface/idatapack.go @@ -1,3 +1,16 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title idatapack.go +// @Description 消息的打包和解包方法 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface /* diff --git a/ziface/imessage.go b/ziface/imessage.go index cada145..88e786e 100644 --- a/ziface/imessage.go +++ b/ziface/imessage.go @@ -1,3 +1,16 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title imessage.go +// @Description 提供消息的基本方法 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface /* diff --git a/ziface/imsghandler.go b/ziface/imsghandler.go index b6f35d7..6fac36b 100644 --- a/ziface/imsghandler.go +++ b/ziface/imsghandler.go @@ -1,3 +1,16 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title imsghandler.go +// @Description 提供worker启动、处理消息业务调用等接口 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface /* diff --git a/ziface/irequest.go b/ziface/irequest.go index 43136a3..49734c7 100644 --- a/ziface/irequest.go +++ b/ziface/irequest.go @@ -1,3 +1,16 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title irequest.go +// @Description 提供连接请求全部接口声明 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface /* diff --git a/ziface/irouter.go b/ziface/irouter.go index 47a7782..788aa18 100644 --- a/ziface/irouter.go +++ b/ziface/irouter.go @@ -1,3 +1,16 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title irouter.go +// @Description 提供消息路由全部接口声明 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface /* diff --git a/ziface/iserver.go b/ziface/iserver.go index 4de5ba5..f235397 100644 --- a/ziface/iserver.go +++ b/ziface/iserver.go @@ -1,23 +1,27 @@ +// Package ziface 主要提供zinx全部抽象层接口定义. +// 包括: +// IServer 服务mod接口 +// IRouter 路由mod接口 +// IConnection 连接mod层接口 +// IMessage 消息mod接口 +// IDataPack 消息拆解接口 +// IMsgHandler 消息处理及协程池接口 +// +// 当前文件描述: +// @Title iserver.go +// @Description 提供Server抽象层全部接口声明 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package ziface -//定义服务器接口 +//定义服务接口 type IServer interface { - //启动服务器方法 - Start() - //停止服务器方法 - Stop() - //开启业务服务方法 - Serve() - //路由功能:给当前服务注册一个路由业务方法,供客户端链接处理使用 - AddRouter(msgID uint32, router IRouter) - //得到链接管理 - GetConnMgr() IConnManager - //设置该Server的连接创建时Hook函数 - SetOnConnStart(func(IConnection)) - //设置该Server的连接断开时的Hook函数 - SetOnConnStop(func(IConnection)) - //调用连接OnConnStart Hook函数 - CallOnConnStart(conn IConnection) - //调用连接OnConnStop Hook函数 - CallOnConnStop(conn IConnection) + Start() //启动服务器方法 + Stop() //停止服务器方法 + Serve() //开启业务服务方法 + AddRouter(msgID uint32, router IRouter) //路由功能:给当前服务注册一个路由业务方法,供客户端链接处理使用 + GetConnMgr() IConnManager //得到链接管理 + SetOnConnStart(func(IConnection)) //设置该Server的连接创建时Hook函数 + SetOnConnStop(func(IConnection)) //设置该Server的连接断开时的Hook函数 + CallOnConnStart(conn IConnection) //调用连接OnConnStart Hook函数 + CallOnConnStop(conn IConnection) //调用连接OnConnStop Hook函数 } diff --git a/zlog/stdzlog.go b/zlog/stdzlog.go index 42cd585..133d24c 100644 --- a/zlog/stdzlog.go +++ b/zlog/stdzlog.go @@ -1,3 +1,12 @@ +// Package zlog 主要提供zinx相关日志记录接口 +// 包括: +// stdzlog模块, 提供全局日志方法 +// zlogger模块, 日志内部定义协议,均为对象类方法 +// +// 当前文件描述: +// @Title stdzlog.go +// @Description 包裹zlogger日志方法,提供全局方法 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package zlog /* diff --git a/zlog/zlogger.go b/zlog/zlogger.go index 30d1d78..f135cdf 100644 --- a/zlog/zlogger.go +++ b/zlog/zlogger.go @@ -1,3 +1,12 @@ +// Package zlog 主要提供zinx相关日志记录接口 +// 包括: +// stdzlog模块, 提供全局日志方法 +// zlogger模块, 日志内部定义协议,均为对象类方法 +// +// 当前文件描述: +// @Title zlogger.go +// @Description 基础日志接口,包括Debug、Fatal等 +// @Author Aceld - Thu Mar 11 10:32:29 CST 2019 package zlog /* @@ -25,9 +34,9 @@ const ( BitDate = 1 << iota //日期标记位 2019/01/23 BitTime //时间标记位 01:23:12 BitMicroSeconds //微秒级标记位 01:23:12.111222 - BitLongFile // 完整文件名称 /home/go/src/zinx/server.go - BitShortFile // 最后文件名 server.go - BitLevel // 当前日志级别: 0(Debug), 1(Info), 2(Warn), 3(Error), 4(Panic), 5(Fatal) + BitLongFile //完整文件名称 /home/go/src/zinx/server.go + BitShortFile //最后文件名 server.go + BitLevel //当前日志级别: 0(Debug), 1(Info), 2(Warn), 3(Error), 4(Panic), 5(Fatal) BitStdFlag = BitDate | BitTime //标准头部日志格式 BitDefault = BitLevel | BitShortFile | BitStdFlag //默认日志头部格式 ) @@ -53,22 +62,14 @@ var levels = []string{ } type ZinxLogger struct { - //确保多协程读写文件,防止文件内容混乱,做到协程安全 - mu sync.Mutex - //每行log日志的前缀字符串,拥有日志标记 - prefix string - //日志标记位 - flag int - //日志输出的文件描述符 - out io.Writer - //输出的缓冲区 - buf bytes.Buffer - //当前日志绑定的输出文件 - file *os.File - //是否打印调试debug信息 - debugClose bool - //获取日志文件名和代码上述的runtime.Call 的函数调用层数 - calldDepth int + mu sync.Mutex //确保多协程读写文件,防止文件内容混乱,做到协程安全 + prefix string //每行log日志的前缀字符串,拥有日志标记 + flag int //日志标记位 + out io.Writer //日志输出的文件描述符 + buf bytes.Buffer //输出的缓冲区 + file *os.File //当前日志绑定的输出文件 + debugClose bool //是否打印调试debug信息 + calldDepth int //获取日志文件名和代码上述的runtime.Call 的函数调用层数 } /* diff --git a/zlog/zlogger_test.go b/zlog/zlogger_test.go index a0d51c4..cc84b76 100644 --- a/zlog/zlogger_test.go +++ b/zlog/zlogger_test.go @@ -1,39 +1,39 @@ -package zlog +package zlog_test import ( + "github.com/aceld/zinx/zlog" "testing" ) func TestStdZLog(t *testing.T) { //测试 默认debug输出 - Debug("zinx debug content1") - Debug("zinx debug content2") + zlog.Debug("zinx debug content1") + zlog.Debug("zinx debug content2") - Debugf(" zinx debug a = %d\n", 10) + zlog.Debugf(" zinx debug a = %d\n", 10) //设置log标记位,加上长文件名称 和 微秒 标记 - ResetFlags(BitDate | BitLongFile | BitLevel) - Info("zinx info content") + zlog.ResetFlags(zlog.BitDate | zlog.BitLongFile | zlog.BitLevel) + zlog.Info("zinx info content") //设置日志前缀,主要标记当前日志模块 - SetPrefix("MODULE") - Error("zinx error content") + zlog.SetPrefix("MODULE") + zlog.Error("zinx error content") //添加标记位 - AddFlag(BitShortFile | BitTime) - Stack(" Zinx Stack! ") + zlog.AddFlag(zlog.BitShortFile | zlog.BitTime) + zlog.Stack(" Zinx Stack! ") //设置日志写入文件 - SetLogFile("./log", "testfile.log") - Debug("===> zinx debug content ~~666") - Debug("===> zinx debug content ~~888") - Error("===> zinx Error!!!! ~~~555~~~") + zlog.SetLogFile("./log", "testfile.log") + zlog.Debug("===> zinx debug content ~~666") + zlog.Debug("===> zinx debug content ~~888") + zlog.Error("===> zinx Error!!!! ~~~555~~~") //关闭debug调试 - CloseDebug() - Debug("===> 我不应该出现~!") - Debug("===> 我不应该出现~!") - Error("===> zinx Error after debug close !!!!") - + zlog.CloseDebug() + zlog.Debug("===> 我不应该出现~!") + zlog.Debug("===> 我不应该出现~!") + zlog.Error("===> zinx Error after debug close !!!!") }