game_sync/robot/base/connect.go

65 lines
1.3 KiB
Go

package base
import (
"time"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/module"
"mongo.games.com/goserver/core/netlib"
)
const (
// RobotSessionStartId 机器人session开始id
RobotSessionStartId = 100000000
)
var (
BenchMarkModule = &BenchMark{}
WaitConnectSessions []*netlib.SessionConfig
)
func NewSessionConfig() *netlib.SessionConfig {
BenchMarkModule.idx++
cfg := Config.Connects
cfg.Id = BenchMarkModule.idx
cfg.Init()
return &cfg
}
type BenchMark struct {
idx int
}
func (m *BenchMark) ModuleName() string {
return "benchmark-module"
}
func (m *BenchMark) Init() {
m.idx = RobotSessionStartId
for i := 0; i < Config.Count; i++ {
cfg := NewSessionConfig()
logger.Logger.Info("waite connect session id=", cfg.Id)
WaitConnectSessions = append(WaitConnectSessions, cfg)
}
}
// Update 机器开始连接游戏服务器
func (m *BenchMark) Update() {
n := len(WaitConnectSessions)
if n > 0 {
config := WaitConnectSessions[n-1]
WaitConnectSessions = WaitConnectSessions[:n-1]
if err := netlib.Connect(config); err != nil {
logger.Logger.Error("netlib.Connect error", err)
}
}
}
func (m *BenchMark) Shutdown() {
module.UnregisteModule(m)
}
func init() {
module.RegisteModule(BenchMarkModule, time.Millisecond, 1)
}