game_sync/worldsrv/dbsaver.go

63 lines
1.2 KiB
Go

package main
import (
"time"
"mongo.games.com/goserver/core/container/balancequeue"
"mongo.games.com/goserver/core/module"
)
var DbSaveInst = &DbSaver{
GroupNumber: 600,
}
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)
}