自学内容网 自学内容网

Go语言实现长连接并发框架 - 消息

前言

你好,我是醉墨居士,上篇博客实现了对连接的封装,那我们对连接的读写操作涉及数据格式的定义,我们采用统一的数据格式。使用我们这种数据格式的数据,我们将其称之为消息

接口

trait/message.go

type Message interface {
ID() uint16
DataLen() uint16
Data() []byte

SetID(uint16)
SetDataLen(uint16)
SetData([]byte)
}

结构体

gpack/message.go

// Message 业务消息
type Message struct {
//消息ID
id uint16
//消息的长度
dataLen uint16
//消息的内容
data []byte
}

// 创建一个message
func NewMessage(id uint16, data []byte) *Message {
return &Message{
id:      id,
dataLen: uint16(len(data)),
data:    data,
}
}

接口实现

gpack/message.go

// ID 返回消息ID
func (m *Message) ID() uint16 {
return m.id
}

// DataLen 返回消息体的长度
func (m *Message) DataLen() uint16 {
return m.dataLen
}

// Data 返回消息的内容
func (m *Message) Data() []byte {
return m.data
}

// SetID 设置消息ID
func (m *Message) SetID(id uint16) {
m.id = id
}

// SetDataLen 设置消息体的长度
func (m *Message) SetDataLen(dataLen uint16) {
m.dataLen = dataLen
}

// SetData 设置消息的内容
func (m *Message) SetData(data []byte) {
m.data = data
}

项目地址

Github:https://github.com/zm50/gte
Giee:https://gitee.com/zm50/gte

最后

我是醉墨居士,我们完成了框架内部连接中的数据传输中数据格式的消息定义,后续我们可以基于这个消息进行相关连接数据读取,消息封装,消息分发等步骤的处理


原文地址:https://blog.csdn.net/qq_67733273/article/details/142691553

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!