64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"time"
|
|
|
|
"mongo.games.com/goserver/core/module"
|
|
|
|
"mongo.games.com/game/util/balancequeue"
|
|
)
|
|
|
|
var DbSaveInst = &DbSaver{
|
|
GroupNumber: 5,
|
|
}
|
|
|
|
type DbSaver struct {
|
|
GroupNumber int
|
|
*balancequeue.BalanceQueue
|
|
m map[int32]balancequeue.Element
|
|
}
|
|
|
|
// RegisterDbSaverTask 向队列中添加SaveTaskHandler
|
|
func (this *DbSaver) RegisterDbSaverTask(i *Player) {
|
|
if i == nil {
|
|
return
|
|
}
|
|
e := balancequeue.ElementWrapper(i.Time2Save)
|
|
this.m[i.GetSnId()] = e
|
|
this.Push(e)
|
|
}
|
|
|
|
// UnregisterDbSaveTask 从队列中移除SaveTaskHandler
|
|
func (this *DbSaver) UnregisterDbSaveTask(i *Player) {
|
|
if i == nil {
|
|
return
|
|
}
|
|
e, ok := this.m[i.GetSnId()]
|
|
if !ok {
|
|
return
|
|
}
|
|
this.Pop(e)
|
|
}
|
|
|
|
func (this *DbSaver) ModuleName() string {
|
|
return "dbsaver"
|
|
}
|
|
|
|
func (this *DbSaver) Init() {
|
|
this.BalanceQueue = balancequeue.New(this.GroupNumber)
|
|
this.m = make(map[int32]balancequeue.Element)
|
|
}
|
|
|
|
func (this *DbSaver) Shutdown() {
|
|
module.UnregisteModule(this)
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
/// Module Implement [end]
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
// 注册模块
|
|
func init() {
|
|
module.RegisteModule(DbSaveInst, time.Second, 0)
|
|
}
|