packet

package
v2.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2026 License: MIT Imports: 9 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExtractRouteSeq added in v2.6.0

func ExtractRouteSeq(buf buffer.Buffer) (int32, int32, error)

ExtractRouteSeq 从消息缓冲区中提取路由与序列号 @param buf buffer.Buffer 消息缓冲区 @return @1 int32 路由 @return @2 int32 序列号 @return @3 error 解包失败时返回的错误

func NewPacker

func NewPacker(opts ...Option) *defaultPacker

NewPacker 创建默认打包器 校验配置合法性并预构建心跳包;传入参数不合法时将直接终止程序 @param opts ...Option 打包配置选项 @return @1 *defaultPacker 默认打包器

func PackHeartbeat added in v2.1.0

func PackHeartbeat(server ...bool) buffer.Buffer

PackHeartbeat 打包心跳 返回的心跳包缓冲区不可修改或释放 @param server ...bool 是否为服务端心跳 @return @1 buffer.Buffer 心跳包缓冲区

func PackMessage added in v2.1.0

func PackMessage(message *Message) (buffer.Buffer, error)

PackMessage 以buffer的形式打包消息 @param message *Message 消息 @return @1 buffer.Buffer 打包后的消息缓冲区 @return @2 error 打包失败时返回的错误

func Read added in v2.6.0

func Read(reader io.Reader) (bool, int64, buffer.Buffer, error)

Read 以buffer的形式读取消息 @param reader io.Reader 数据读取源 @return @1 bool 是否为心跳消息 @return @2 int64 服务器侧时间戳(纳秒) @return @3 buffer.Buffer 消息缓冲区 @return @4 error 读取失败时返回的错误

func SetPacker

func SetPacker(packer Packer)

SetPacker 设置打包器 覆盖全局打包器,用于替换默认的打包实现 @param packer Packer 打包器

func UnpackMessage added in v2.1.0

func UnpackMessage(buf buffer.Buffer) (int32, int32, buffer.Buffer, error)

UnpackMessage 解包消息 @param buf buffer.Buffer 消息缓冲区 @return @1 *Message 消息对象 @return @2 error 解包失败时返回的错误

Types

type Message

type Message struct {
	Seq    int32  // 序列号
	Route  int32  // 路由ID
	Buffer []byte // 消息内容
}

Message 消息 用于在编解码之间传递普通数据消息

type Option

type Option func(o *options)

func WithBufferBytes

func WithBufferBytes(bufferBytes int) Option

WithBufferBytes 设置消息字节数 最大允许的消息字节数 @param bufferBytes int 消息字节数 @return @1 Option 打包配置选项

func WithByteOrder

func WithByteOrder(byteOrder binary.ByteOrder) Option

WithByteOrder 设置字节序 @param byteOrder binary.ByteOrder 字节序 @return @1 Option 打包配置选项

func WithHeartbeatTime added in v2.1.0

func WithHeartbeatTime(heartbeatTime bool) Option

WithHeartbeatTime 是否携带心跳时间 @param heartbeatTime bool 是否携带心跳时间 @return @1 Option 打包配置选项

func WithRouteBytes

func WithRouteBytes(routeBytes int) Option

WithRouteBytes 设置路由字节数 路由字节数需为1、2或4 @param routeBytes int 路由字节数 @return @1 Option 打包配置选项

func WithSeqBytes

func WithSeqBytes(seqBytes int) Option

WithSeqBytes 设置序列号字节数 可取0、1、2或4,为0时不开启序列号编码 @param seqBytes int 序列号字节数 @return @1 Option 打包配置选项

type Packer

type Packer interface {
	// Read 以buffer的形式读取消息
	// @param reader io.Reader 数据读取源
	// @return @1 bool 是否为心跳消息
	// @return @2 int64 服务器侧时间戳(纳秒)
	// @return @3 buffer.Buffer 消息缓冲区
	// @return @4 error 读取失败时返回的错误
	Read(reader io.Reader) (bool, int64, buffer.Buffer, error)
	// PackMessage 以buffer的形式打包消息
	// @param message *Message 消息
	// @return @1 buffer.Buffer 打包后的消息缓冲区
	// @return @2 error 打包失败时返回的错误
	PackMessage(message *Message) (buffer.Buffer, error)
	// ExtractRouteSeq 从消息缓冲区中提取路由与序列号
	// @param buf buffer.Buffer 消息缓冲区
	// @return @1 int32 路由
	// @return @2 int32 序列号
	// @return @3 error 解包失败时返回的错误
	ExtractRouteSeq(buf buffer.Buffer) (int32, int32, error)
	// UnpackMessage 解包消息
	// @param buf buffer.Buffer 消息缓冲区
	// @return @1 *Message 消息对象
	// @return @2 error 解包失败时返回的错误
	UnpackMessage(buf buffer.Buffer) (int32, int32, buffer.Buffer, error)
	// PackHeartbeat 打包心跳
	// @param server ...bool 是否为服务端心跳
	// @return @1 buffer.Buffer 心跳包缓冲区
	PackHeartbeat(server ...bool) buffer.Buffer
}

Packer 打包器接口 定义消息的编码与解码能力

func GetPacker

func GetPacker() Packer

GetPacker 获取打包器 @return @1 Packer 全局打包器

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL