package service import ( "blazing/common/core" "blazing/common/data/entity" "github.com/panjf2000/gnet/v2" ) func GetPlayer(c gnet.Conn, userid uint32) *entity.Player { //TODO 这里待优化,可能存在内存泄漏问题 //检查player初始化,是否为conn初始后取map,防止二次连接后存在两个player clientdata := c.Context().(*entity.ClientData) if clientdata != nil && clientdata.Player != nil { return clientdata.Player } var player *entity.Player if player1, ok := core.Mainplayer.Load((userid)); ok { player = player1.(*entity.Player) //取成功,否则创建 clientdata.Player = player } return player // return nil } func SetPlayer(c gnet.Conn, userid uint32) *entity.Player { //TODO 这里待优化,可能存在内存泄漏问题 clientdata := c.Context().(*entity.ClientData) player := entity.NewPlayer( entity.WithUserID(userid), //注入ID entity.WithConn(c), //注入conn ) core.Mainplayer.Store(userid, player) clientdata.Player = player return player // return nil }