Documentation ¶
Index ¶
- func JsonMarshal(messageID int32, input any) (output *msgs.Json, err error)
- func JsonUnmarshal[T any](input any) (messageID int32, output *T, err error)
- func ProtoMarshal(messageID int32, input proto.Message) (output *msgs.Proto, err error)
- func ProtoUnmarshal[T any](input any) (messageID int32, output *T, err error)
- func RavenCBuilder(messageID, errID int32, header, request proto.Message, ...) (output any, err error)
- func RavenRespondAt(input any, index int) proto.Message
- func RavenRespondFind(input, respondType any) proto.Message
- func RavenSBuilder(messageID int32, header, request proto.Message) (output any, err error)
- func RavenTestErrID(input any, expected int32) bool
- func RavenTestHeader(input any, expected proto.Message) bool
- func RavenTestMessageID(input any, expected int32) bool
- func RavenTestRequest(input any, expected proto.Message) bool
- func RavenTestRespond(input any, expected ...proto.Message) bool
- func RavenTestRespondLength(input any, expected int) bool
- func RavenTestRespondType(input any, expected ...proto.Message) bool
- type Json
- type Process
- type Processor
- type Procmgr
- type Proto
- type Raven
- type RavenCData
- type RavenClient
- type RavenSData
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func JsonMarshal ¶
JsonMarshal json訊息序列化
func JsonUnmarshal ¶
JsonUnmarshal json訊息反序列化
func ProtoMarshal ¶
ProtoMarshal 序列化proto訊息
func ProtoUnmarshal ¶
ProtoUnmarshal 反序列化proto訊息
func RavenCBuilder ¶ added in v1.1.1
func RavenCBuilder(messageID, errID int32, header, request proto.Message, respond ...proto.Message) (output any, err error)
RavenCBuilder 建立RavenC訊息
func RavenRespondAt ¶ added in v1.1.1
RavenRespondAt 取得回應列表中指定位置的資料
func RavenRespondFind ¶ added in v1.1.13
RavenRespondFind 取得回應列表中首個符合指定類型的資料
func RavenSBuilder ¶ added in v1.1.1
RavenSBuilder 建立RavenS訊息
func RavenTestErrID ¶ added in v1.1.1
RavenTestErrID 測試錯誤編號, input必須是msgs.RavenC, 並且錯誤編號與expected相符才會傳回true, 否則為false
func RavenTestHeader ¶ added in v1.1.1
RavenTestHeader 測試標頭資料, input必須是msgs.RavenC, 並且標頭資料與expected相符才會傳回true, 否則為false
func RavenTestMessageID ¶ added in v1.1.1
RavenTestMessageID 測試訊息編號, input必須是msgs.RavenC, 並且訊息編號與expected相符才會傳回true, 否則為false
func RavenTestRequest ¶ added in v1.1.1
RavenTestRequest 測試要求資料, input必須是msgs.RavenC, 並且要求資料與expected相符才會傳回true, 否則為false
func RavenTestRespond ¶ added in v1.1.1
RavenTestRespond 測試回應列表, input必須是msgs.RavenC, 並且expected列表中的每一個元素都在回應列表中找到並且相符才會傳回true, 否則為false 但是這並不代表expected列表與回應列表完全一致, 例如有只出現於回應列表, 但不在expected列表中的資料, 就無法通過此方式檢測出來
func RavenTestRespondLength ¶ added in v1.1.1
RavenTestRespondLength 測試回應長度, input必須是msgs.RavenC, 並且回應列表長度必須相符才會傳回true, 否則為false
Types ¶
type Json ¶
type Json struct {
*Procmgr // 管理器
}
Json json處理器, 封包結構使用msgs.Json
- 訊息定義: support/proto/mizugo/msg-go/msgs-json/json.go
- 訊息定義: support/proto/mizugo/msg-cs/msgs-json/Json.cs
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 int32, process Process) // Del 刪除訊息處理 Del(messageID int32) // Get 取得訊息處理 Get(messageID int32) Process }
Processor 處理介面, 負責以下功能
- 封包編碼: 在 Encode 中實現
- 封包解碼: 在 Decode 中實現
- 收到訊息時的處理: 在 Process 中實現
- 管理訊息處理函式: 在 Add, Del 中實現
如果想要建立新的處理結構, 需要遵循以下流程
- 定義訊息結構, 訊息結構必須包含 messageID, 類型為 int32
- 訊息結構如果要使用protobuf, 可以把定義檔放在 support/proto-mizugo 中
- 定義處理結構, 處理結構需要繼承 Processor 介面, 並實現所有函式; 在處理結構中包含 Procmgr 結構來實現訊息處理功能, 這樣只要實作 Encode, Decode, Process 三個函式就可以了
mizugo提供的預設處理器有 Json, Proto, Raven
type Procmgr ¶
type Procmgr struct {
// contains filtered or unexported fields
}
Procmgr 管理器, 負責管理訊息處理函式
type Proto ¶
type Proto struct {
*Procmgr // 管理器
}
Proto proto處理器, 封包結構使用msgs.Proto
- 訊息定義: support/proto/mizugo/proto.proto
type Raven ¶ added in v1.1.1
type Raven struct {
*Procmgr // 管理器
}
Raven raven處理器, 封包結構使用msgs.RavenS, msgs.RavenC
- 訊息定義: support/proto/mizugo/raven.proto
type RavenCData ¶ added in v1.1.1
type RavenCData[H, Q any] struct { MessageID int32 // 訊息編號 ErrID int32 // 錯誤編號 Header *H // 標頭資料 Request *Q // 要求資料 Respond []proto.Message // 回應列表 }
RavenCData RavenC資料
func RavenCParser ¶ added in v1.1.1
func RavenCParser[H, Q any](input any) (output *RavenCData[H, Q], err error)
RavenCParser 解析RavenC訊息
func (*RavenCData[H, Q]) Detail ¶ added in v1.1.1
func (this *RavenCData[H, Q]) Detail() string
Detail 取得詳細資訊
func (*RavenCData[H, Q]) Size ¶ added in v1.1.1
func (this *RavenCData[H, Q]) Size() int
Size 取得訊息大小
type RavenClient ¶ added in v1.1.1
type RavenClient struct {
*Procmgr // 管理器
}
RavenClient raven客戶端處理器, 封包結構使用msgs.RavenS, msgs.RavenC; 這個處理器提供給客戶端使用
- 訊息定義: support/proto/mizugo/raven.proto
func NewRavenClient ¶ added in v1.1.1
func NewRavenClient() *RavenClient
NewRavenClient 建立raven客戶端處理器
func (*RavenClient) Decode ¶ added in v1.1.1
func (this *RavenClient) Decode(input any) (output any, err error)
Decode 封包解碼
func (*RavenClient) Encode ¶ added in v1.1.1
func (this *RavenClient) Encode(input any) (output any, err error)
Encode 封包編碼
func (*RavenClient) Process ¶ added in v1.1.1
func (this *RavenClient) Process(input any) error
Process 訊息處理
type RavenSData ¶ added in v1.1.1
RavenSData RavenS資料
func RavenSParser ¶ added in v1.1.1
func RavenSParser[H, Q any](input any) (output *RavenSData[H, Q], err error)
RavenSParser 解析RavenS訊息
func (*RavenSData[H, Q]) Detail ¶ added in v1.1.1
func (this *RavenSData[H, Q]) Detail() string
Detail 取得訊息資訊
func (*RavenSData[H, Q]) Size ¶ added in v1.1.1
func (this *RavenSData[H, Q]) Size() int
Size 取得訊息大小