Documentation ¶
Index ¶
- Constants
- type Awaker
- type Entity
- func (this *Entity) AddMessage(messageID int32, process procs.Process)
- func (this *Entity) AddModule(module Moduler) error
- func (this *Entity) DelMessage(messageID int32)
- func (this *Entity) Enable() bool
- func (this *Entity) EntityID() EntityID
- func (this *Entity) Finalize()
- func (this *Entity) GetModule(moduleID ModuleID) Moduler
- func (this *Entity) Initialize(wrong Wrong) (err error)
- func (this *Entity) LocalAddr() net.Addr
- func (this *Entity) PublishDelay(name string, param any, delay time.Duration)
- func (this *Entity) PublishFixed(name string, param any, interval time.Duration)
- func (this *Entity) PublishOnce(name string, param any)
- func (this *Entity) RemoteAddr() net.Addr
- func (this *Entity) Send(message any)
- func (this *Entity) SetProcess(process procs.Processor) error
- func (this *Entity) SetSession(session nets.Sessioner) error
- func (this *Entity) Stop()
- func (this *Entity) StopWait()
- func (this *Entity) Subscribe(name string, process Process) string
- func (this *Entity) Unsubscribe(subID string)
- type EntityID
- type Entitymgr
- type Eventmap
- func (this *Eventmap) Finalize()
- func (this *Eventmap) Initialize() error
- func (this *Eventmap) PubDelay(name string, param any, delay time.Duration)
- func (this *Eventmap) PubFixed(name string, param any, interval time.Duration)
- func (this *Eventmap) PubOnce(name string, param any)
- func (this *Eventmap) Sub(name string, process Process) string
- func (this *Eventmap) Unsub(subID string)
- type Module
- type ModuleID
- type Modulemap
- type Moduler
- type Process
- type Starter
- type Wrong
Constants ¶
const ( EventCapacity = 1000 // 事件容量 EventDispose = "dispose" // 結束事件, 實體結束時第一個執行, 參數是nil EventShutdown = "shutdown" // 關閉事件, 實體結束時第二個執行, 參數是nil, 這時連線已經中斷 EventRecv = nets.EventRecv // 接收訊息事件, 當接收訊息後觸發, 參數是訊息物件 EventSend = nets.EventSend // 傳送訊息事件, 當傳送訊息後觸發, 參數是訊息物件 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Entity ¶
Entity 實體資料, mizugo中用於儲存對象的基礎物件, 對象可以是個連線, 也可以用於表示遊戲物件
使用者可以到實體新增模組, 用於分類與實作遊戲功能/訊息處理等
使用者可以到實體訂閱事件, 用於接收實體發布的事件
使用者可以到實體發布事件, 發布事件有以下模式
- 單次事件: 事件只執行一次
- 延遲事件: 事件只執行一次, 且會延遲一段時間才發布
- 定時事件: 事件會定時執行, 由於不能刪除定時事件, 因此發布定時事件前請多想想
實體會發布以下內部事件
- EventDispose: 結束事件, 實體結束時第一個執行, 參數是nil
- EventShutdown: 關閉事件, 實體結束時第二個執行, 參數是nil, 這時連線已經中斷
- EventRecv: 接收訊息事件, 當接收訊息後觸發, 參數是訊息物件
- EventSend: 傳送訊息事件, 當傳送訊息後觸發, 參數是訊息物件
實體可以設置處理功能, 負責訊息處理功能; 需要在實體初始化之前設置 procs.Processor
實體可以設置會話功能, 負責網路相關功能; 需要在實體初始化之前設置 nets.Sessioner
結束實體時, 需要執行 Finalize
func (*Entity) AddMessage ¶
AddMessage 新增訊息處理
func (*Entity) Initialize ¶
Initialize 初始化處理
func (*Entity) PublishDelay ¶
PublishDelay 發布延遲事件, 事件會延遲一段時間才發布, 但仍是單次事件
func (*Entity) PublishFixed ¶
PublishFixed 發布定時事件, 請注意! 由於不能刪除定時事件, 因此發布定時事件前請多想想
func (*Entity) PublishOnce ¶
PublishOnce 發布單次事件
func (*Entity) SetProcess ¶
SetProcess 設定處理物件, 初始化完成後就不能設定處理物件
func (*Entity) SetSession ¶
SetSession 設定會話物件, 初始化完成後就不能設定會話物件
type Entitymgr ¶
type Entitymgr struct {
// contains filtered or unexported fields
}
Entitymgr 實體管理器, 負責新增/刪除/取得實體等功能
type Eventmap ¶
type Eventmap struct {
// contains filtered or unexported fields
}
Eventmap 事件列表, 提供了事件訂閱/發布等功能, 事件列表本身是執行緒安全的, 但是發布的事件會在單一的事件執行緒中被執行, 以此保證了事件有序執行
type Module ¶
type Module struct {
// contains filtered or unexported fields
}
Module 模組資料, 用於分類與實作遊戲功能/訊息處理等
模組實體時, 需要遵循以下流程
- 定義模組結構, 並且把 Module 作為模組的第一個成員
- (可選)繼承 Awaker 介面, 並實作介面中的 Awake 函式, 其中可以填寫模組的初始化
- (可選)繼承 Starter 介面, 並實作介面中的 Start 函式, 其中可以填寫模組的初始化; 兩個初始化介面的執行順序為 Awaker => Starter
- 建立模組資料, 並把模組加入到實體中; 需要在實體初始化之前完成
type Modulemap ¶
type Modulemap struct {
// contains filtered or unexported fields
}
Modulemap 模組列表, 負責新增/刪除/取得模組等功能
type Moduler ¶
type Moduler interface { // ModuleID 取得模組編號 ModuleID() ModuleID // Entity 取得實體物件 Entity() *Entity // contains filtered or unexported methods }
Moduler 模組介面