message

package
v0.0.10 Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2020 License: GPL-3.0 Imports: 4 Imported by: 1

Documentation

Overview

Package message 定義了 如何從 io.Reader 中 解析消息

Index

Constants

View Source
const (
	// 數據 超過了允許的 最大 長度
	ErrOutOfMaxData = iota + 1
)

定義了 各種 錯誤 代碼

Variables

This section is empty.

Functions

func Body

func Body(msg []byte) []byte

Body 返回 默認 消息包 body

func Command

func Command(msg []byte) uint16

Command 返回 默認 消息包 指令碼

func Format

func Format(msg []byte, cmd uint16) bool

Format 填充 默認 消息包 Header

func IsOutOfMaxData

func IsOutOfMaxData(e error) bool

IsOutOfMaxData 如果 e 是 ErrOutOfMaxData 返回 true

func Len

func Len(bodyLen int) int

Len 返回 默認 消息包 長度

func Marshal

func Marshal(cmd uint16, data []byte) (msg []byte, e error)

Marshal 創建 默認的 消息

由 Header{} + Body {} 組成的消息

Header 由 binary.LittleEndian 16 字節 body長度 + 16 字節 指令碼 組成

失敗 返回 ErrOutOfMaxData

func MarshalError

func MarshalError(cmd uint16, data error) (msg []byte, e error)

MarshalError Marshal 的 語法糖

func MarshalString

func MarshalString(cmd uint16, data string) (msg []byte, e error)

MarshalString Marshal 的 語法糖

func Ok

func Ok(msg []byte) bool

Ok 如果 msg 是 默認 消息包 返回 true

func SetCommand

func SetCommand(msg []byte, cmd uint16)

SetCommand 設置 默認 消息包 的 指令碼

Types

type Analyst

type Analyst interface {
	// Header 返回 消息 包頭 長度
	Header() int
	// Body 傳入 包頭 返回 body 長度
	Body(header []byte) (int, error)
}

Analyst 是一個 消息 分析者

func NewAnalyst

func NewAnalyst(header int, f AnalyzeFunc) Analyst

NewAnalyst 創建一個 消息 分析者

func NewDefaultAnalyst

func NewDefaultAnalyst() Analyst

NewDefaultAnalyst 返回 默認的 消息 分析者

由 Header{} + Body {} 組成的消息

Header 由 binary.LittleEndian 16 字節 body長度 + 16 字節 指令碼 組成

type AnalyzeFunc

type AnalyzeFunc func(header []byte) (int, error)

AnalyzeFunc 由 header 分析 body

type BasicParser

type BasicParser struct {
	Analyst Analyst
}

BasicParser 一個 基礎的 消息 解析器

func (BasicParser) ReadMessage

func (p BasicParser) ReadMessage(r io.Reader) (msg []byte, e error)

ReadMessage 從 io.Reader 中 讀出一個 消息

type BufferParser

type BufferParser struct {
	Analyst Analyst
	Buffer  []byte
	Pos     int
	Size    int
}

BufferParser 一個 帶讀取 緩衝區的 消息 解析器

func (*BufferParser) ReadMessage

func (p *BufferParser) ReadMessage(r io.Reader) (msg []byte, e error)

ReadMessage 從 io.Reader 中 讀出一個 消息

type Error

type Error struct {
	// contains filtered or unexported fields
}

Error 錯誤 信息

func (Error) Code

func (e Error) Code() int

Code 返回 錯誤 代碼

func (Error) Error

func (e Error) Error() string

Error 返回 錯誤 描述信息

type Parser

type Parser interface {
	// ReadMessage 從 io.Reader 中 讀出一個 消息
	ReadMessage(r io.Reader) (msg []byte, e error)
}

Parser 是一個 消息 解析器

func NewBufferParser

func NewBufferParser(analyst Analyst, buffer []byte) (parser Parser)

NewBufferParser 創建一個 帶讀取緩衝區的 消息 解析器 *BufferParser

如果 len(buffer) == 0 則 返回 BasicParser

func NewParser

func NewParser(analyst Analyst) (parser Parser)

NewParser 創建一個 消息 解析器

Jump to

Keyboard shortcuts

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