codec

package
v0.1.25 Latest Latest
Warning

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

Go to latest
Published: Dec 20, 2021 License: BSD-3-Clause Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	V1EncoderVersion  = 1
	V1HeaderSize      = 16            // 包头大小
	V1MaxPayloadBytes = (1 << 16) - 1 // 64K
)
View Source
const (
	V2EncoderVersion  = 1
	V2HeaderSize      = 24            // 包头大小
	V2MaxPayloadBytes = (1 << 24) - 1 // 16M
	V2MaxReferCount   = 1000
)

Variables

This section is empty.

Functions

func ReadLenData

func ReadLenData(r io.Reader) ([]byte, error)

读取2字节开头的数据

func Register added in v0.1.12

func Register(v Encoder)

func WriteLenData

func WriteLenData(w io.Writer, data []byte) (int, error)

写入2字节开头的数据

Types

type Encoder added in v0.1.12

type Encoder interface {
	Name() string
	Version() int

	// 把`pkt`编码到`w`,内部除了flag不应该修改pkt的其它字段
	WritePacket(w io.Writer, encrypt cipher.BlockCryptor, pkt fatchoy.IPacket) (int, error)

	// 按协议格式读取head和body
	ReadHeadBody(r io.Reader) ([]byte, []byte, error)

	// 根据head和body解码消息到`pkt`
	UnmarshalPacket(header, body []byte, decrypt cipher.BlockCryptor, pkt fatchoy.IPacket) error

	// 从`r`里读取消息到`pkt`
	ReadPacket(r io.Reader, decrypt cipher.BlockCryptor, pkt fatchoy.IPacket) error
}

消息编/解码接口

func GetEncoder added in v0.1.12

func GetEncoder(name string) Encoder

func NewV1Encoder added in v0.1.12

func NewV1Encoder(threshold int) Encoder

func NewV2Encoder added in v0.1.12

func NewV2Encoder(threshold int) Encoder

type V1Header

type V1Header []byte

func (V1Header) CalcChecksum

func (h V1Header) CalcChecksum(payload []byte) uint32

校验码包含head和body

func (V1Header) Checksum

func (h V1Header) Checksum() uint32

CRC校验码

func (V1Header) Command

func (h V1Header) Command() int32

func (V1Header) Flag

func (h V1Header) Flag() uint16

标记位

func (V1Header) Len

func (h V1Header) Len() uint16

长度包含头部和body

func (V1Header) MD5Sum added in v0.1.8

func (h V1Header) MD5Sum() string

func (V1Header) Pack

func (h V1Header) Pack(pkt fatchoy.IPacket, size uint16)

func (V1Header) Seq

func (h V1Header) Seq() uint32

session内的唯一序号

func (V1Header) SetChecksum

func (h V1Header) SetChecksum(crc uint32)

type V2Header

type V2Header []byte

func (V2Header) CalcChecksum

func (h V2Header) CalcChecksum(refer, payload []byte) uint32

校验码包含head和body

func (V2Header) Checksum

func (h V2Header) Checksum() uint32

CRC校验码

func (V2Header) Command

func (h V2Header) Command() int32

func (V2Header) Flag

func (h V2Header) Flag() uint8

标记位

func (V2Header) Len

func (h V2Header) Len() uint32

长度包含头部和body

func (V2Header) MD5Sum

func (h V2Header) MD5Sum() string

func (V2Header) Node

func (h V2Header) Node() fatchoy.NodeID

目标节点

func (V2Header) Pack

func (h V2Header) Pack(pkt fatchoy.IPacket, refcnt uint16, size uint32)

func (V2Header) RefCount

func (h V2Header) RefCount() uint16

标记位

func (V2Header) Seq

func (h V2Header) Seq() uint32

session内的唯一序号

func (V2Header) SetChecksum

func (h V2Header) SetChecksum(crc uint32)

func (V2Header) Type

func (h V2Header) Type() uint8

类型

Jump to

Keyboard shortcuts

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