5.1 创建消息封装类型

zinx/ziface/下创建imessage.go文件

zinx/ziface/imessage.go

  1. package ziface
  2. /*
  3. 将请求的一个消息封装到message中,定义抽象层接口
  4. */
  5. type IMessage interface {
  6. GetDataLen() uint32 //获取消息数据段长度
  7. GetMsgId() uint32 //获取消息ID
  8. GetData() []byte //获取消息内容
  9. SetMsgId(uint32) //设计消息ID
  10. SetData([]byte) //设计消息内容
  11. SetDataLen(uint32) //设置消息数据段长度
  12. }

同时创建实例message类,在zinx/znet/下,创建message.go文件

zinx/znet/message.go

  1. package znet
  2. type Message struct {
  3. Id uint32 //消息的ID
  4. DataLen uint32 //消息的长度
  5. Data []byte //消息的内容
  6. }
  7. //创建一个Message消息包
  8. func NewMsgPackage(id uint32, data []byte) *Message {
  9. return &Message{
  10. Id: id,
  11. DataLen: uint32(len(data)),
  12. Data: data,
  13. }
  14. }
  15. //获取消息数据段长度
  16. func (msg *Message) GetDataLen() uint32 {
  17. return msg.DataLen
  18. }
  19. //获取消息ID
  20. func (msg *Message) GetMsgId() uint32 {
  21. return msg.Id
  22. }
  23. //获取消息内容
  24. func (msg *Message) GetData() []byte {
  25. return msg.Data
  26. }
  27. //设置消息数据段长度
  28. func (msg *Message) SetDataLen(len uint32) {
  29. msg.DataLen = len
  30. }
  31. //设计消息ID
  32. func (msg *Message) SetMsgId(msgId uint32) {
  33. msg.Id = msgId
  34. }
  35. //设计消息内容
  36. func (msg *Message) SetData(data []byte) {
  37. msg.Data = data
  38. }

整理一个基本的message包,会包含消息ID数据数据长度三个成员,提供基本的setter和getter方法,目的是为了以后做封装优化的作用。同时也提供了一个创建一个message包的初始化方法NewMegPackage