5.3 Zinx-V0.5代码实现
现在我们需要把封包和拆包的功能集成到Zinx中,并且测试Zinx该功能是否生效。
A) Request字段修改
首先我们要将我们之前的Request中的[]byte类型的data字段改成Message类型.
zinx/znet/request.go
package znet
import "zinx/ziface"
type Request struct {
conn ziface.IConnection //已经和客户端建立好的 链接
msg ziface.IMessage //客户端请求的数据
}
//获取请求连接信息
func(r *Request) GetConnection() ziface.IConnection {
return r.conn
}
//获取请求消息的数据
func(r *Request) GetData() []byte {
return r.msg.GetData()
}
//获取请求的消息的ID
func (r *Request) GetMsgID() uint32 {
return r.msg.GetMsgId()
}B) 集成拆包过程
接下来我们需要在Connection的StartReader()方法中,修改之前的读取客户端的这段代码:
改成如下:
zinx/znet/connection.go
StartReader()方法
C) 提供封包方法
现在我们已经将拆包的功能集成到Zinx中了,但是使用Zinx的时候,如果我们希望给用户返回一个TLV格式的数据,总不能每次都经过这么繁琐的过程,所以我们应该给Zinx提供一个封包的接口,供Zinx发包使用。
zinx/ziface/iconnection.go
新增SendMsg()方法
zinx/znet/connection.go
SendMsg()方法实现:
Last updated
Was this helpful?