procs

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2024 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func JsonMarshal

func JsonMarshal(messageID MessageID, input any) (output *msgs.JsonMsg, err error)

JsonMarshal json訊息序列化

func ProtoAny added in v1.1.0

func ProtoAny[T any](input *anypb.Any) (output *T, err error)

ProtoAny 將proto的any轉換為指定物件

func ProtoMarshal

func ProtoMarshal(messageID MessageID, input proto.Message) (output *msgs.ProtoMsg, err error)

ProtoMarshal 序列化proto訊息

Types

type Json

type Json struct {
	*Procmgr // 管理器
}

Json json處理器, 封包結構使用JsonMsg

  • 訊息定義: support/proto/mizugo/msg-go/msgs-json/jsonmsg.go
  • 訊息定義: support/proto/mizugo/msg-cs/msgs-json/Jsonmsg.cs

func NewJson

func NewJson() *Json

NewJson 建立json處理器

func (*Json) Decode

func (this *Json) Decode(input any) (output any, err error)

Decode 封包解碼

func (*Json) Encode

func (this *Json) Encode(input any) (output any, err error)

Encode 封包編碼

func (*Json) Process

func (this *Json) Process(input any) error

Process 訊息處理

type MessageID

type MessageID = int32

MessageID 訊息編號, 設置為int32以跟proto的列舉類型統一

func JsonUnmarshal

func JsonUnmarshal[T any](input any) (messageID MessageID, output *T, err error)

JsonUnmarshal json訊息反序列化

func ProtoUnmarshal

func ProtoUnmarshal[T any](input any) (messageID MessageID, output *T, err error)

ProtoUnmarshal 反序列化proto訊息

type Process

type Process func(message any)

Process 訊息處理函式類型

type Processor

type Processor interface {
	// Encode 封包編碼
	Encode(input any) (output any, err error)

	// Decode 封包解碼
	Decode(input any) (output any, err error)

	// Process 訊息處理
	Process(input any) error

	// Add 新增訊息處理
	Add(messageID MessageID, process Process)

	// Del 刪除訊息處理
	Del(messageID MessageID)
}

Processor 處理介面, 負責以下功能

  • 封包編碼: 在 Encode 中實現
  • 封包解碼: 在 Decode 中實現
  • 收到訊息時的處理: 在 Process 中實現
  • 管理訊息處理函式: 在 Add, Del 中實現

如果想要建立新的處理結構, 需要遵循以下流程

  • 定義訊息結構, 訊息結構必須包含 MessageID
  • 訊息結構如果要使用protobuf, 可以把定義檔放在support/proto/mizugo中
  • 定義處理結構, 處理結構需要繼承 Processor 介面, 並實現所有函式; 在處理結構中包含 Procmgr 結構來實現訊息處理功能, 這樣只要實作 Encode, Decode, Process 三個函式就可以了

mizugo提供的預設處理器有 Json, Proto

type Procmgr

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

Procmgr 管理器, 負責管理訊息處理函式

func NewProcmgr

func NewProcmgr() *Procmgr

NewProcmgr 建立管理器

func (*Procmgr) Add

func (this *Procmgr) Add(messageID MessageID, process Process)

Add 新增處理函式

func (*Procmgr) Del

func (this *Procmgr) Del(messageID MessageID)

Del 刪除處理函式

func (*Procmgr) Get

func (this *Procmgr) Get(messageID MessageID) Process

Get 取得處理函式

type Proto

type Proto struct {
	*Procmgr // 管理器
}

Proto proto處理器, 封包結構使用ProtoMsg

  • 訊息定義: support/proto/mizugo/protomsg.proto

func NewProto

func NewProto() *Proto

NewProto 建立proto處理器

func (*Proto) Decode

func (this *Proto) Decode(input any) (output any, err error)

Decode 封包解碼

func (*Proto) Encode

func (this *Proto) Encode(input any) (output any, err error)

Encode 封包編碼

func (*Proto) Process

func (this *Proto) Process(input any) error

Process 訊息處理

Jump to

Keyboard shortcuts

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