- 5.1 创建消息封装类型
5.1 创建消息封装类型
在zinx/ziface/
下创建imessage.go
文件
zinx/ziface/imessage.go
package ziface
/*
将请求的一个消息封装到message中,定义抽象层接口
*/
type IMessage interface {
GetDataLen() uint32 //获取消息数据段长度
GetMsgId() uint32 //获取消息ID
GetData() []byte //获取消息内容
SetMsgId(uint32) //设计消息ID
SetData([]byte) //设计消息内容
SetDataLen(uint32) //设置消息数据段长度
}
同时创建实例message类,在zinx/znet/
下,创建message.go
文件
zinx/znet/message.go
package znet
type Message struct {
Id uint32 //消息的ID
DataLen uint32 //消息的长度
Data []byte //消息的内容
}
//创建一个Message消息包
func NewMsgPackage(id uint32, data []byte) *Message {
return &Message{
Id: id,
DataLen: uint32(len(data)),
Data: data,
}
}
//获取消息数据段长度
func (msg *Message) GetDataLen() uint32 {
return msg.DataLen
}
//获取消息ID
func (msg *Message) GetMsgId() uint32 {
return msg.Id
}
//获取消息内容
func (msg *Message) GetData() []byte {
return msg.Data
}
//设置消息数据段长度
func (msg *Message) SetDataLen(len uint32) {
msg.DataLen = len
}
//设计消息ID
func (msg *Message) SetMsgId(msgId uint32) {
msg.Id = msgId
}
//设计消息内容
func (msg *Message) SetData(data []byte) {
msg.Data = data
}
整理一个基本的message包,会包含消息ID,数据,数据长度三个成员,提供基本的setter和getter方法,目的是为了以后做封装优化的作用。同时也提供了一个创建一个message包的初始化方法NewMegPackage
。