game_sync/gamesrv/action/action_machine.go

52 lines
1.1 KiB
Go

package action
import (
"mongo.games.com/game/protocol/machine"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"sync"
)
var MachineMap = make(map[int]*DollMachine)
var MachineMapLock = sync.Mutex{}
type DollMachine struct {
Id int
Status bool
VideoAddr string
}
func MSDollMachineList(session *netlib.Session, packetId int, data interface{}) error {
logger.Logger.Tracef("TestHandler %v", data)
MachineMap = make(map[int]*DollMachine)
if msg, ok := data.(*machine.MSDollMachineList); ok {
for i, info := range msg.Data {
MachineMap[i+1] = &DollMachine{
Id: i + 1,
Status: false,
VideoAddr: info.VideoAddr,
}
logger.Logger.Tracef("MachineMap[%v] = %v", i, info.VideoAddr)
}
}
return nil
}
// 获取空闲娃娃机标识
func GetFreeDollMachineId() int {
// 获取互斥锁
MachineMapLock.Lock()
defer MachineMapLock.Unlock()
for i, v := range MachineMap {
if v.Status == false {
v.Status = true
return i
}
}
return 0
}
func init() {
netlib.Register(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), &machine.MSDollMachineList{}, MSDollMachineList)
}