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) }