refactor(entity): 重构 ClientData 结构体并添加同步锁

- 在 ClientData 中添加 sync.Mutex 以确保并发安全
- 实现 SetPlayer 和 GetPlayer 等方法来封装 player 字段的操作
- 更新相关代码以使用新的 ClientData 结构和方法
This commit is contained in:
2025-07-06 22:58:39 +08:00
parent 53da82df82
commit 666557416d
9 changed files with 142 additions and 49 deletions

View File

@@ -1,15 +1,41 @@
package entity
import "sync"
type ClientData struct {
IsCrossDomain bool //是否跨域过
Player *Player //客户实体
isCrossDomain bool //是否跨域过
player *Player //客户实体
//UserID uint32
m sync.Mutex
}
func (cd *ClientData) SetPlayer(player *Player) {
cd.m.Lock()
defer cd.m.Unlock()
cd.player = player
}
func (cd *ClientData) GetPlayer() *Player {
cd.m.Lock()
defer cd.m.Unlock()
return cd.player
}
func (cd *ClientData) SetCrossDomain(isCrossDomain bool) {
cd.m.Lock()
defer cd.m.Unlock()
cd.isCrossDomain = isCrossDomain
}
func (cd *ClientData) GetIsCrossDomain() bool {
cd.m.Lock()
defer cd.m.Unlock()
return cd.isCrossDomain
}
func NewClientData() *ClientData {
cd := &ClientData{
IsCrossDomain: false,
Player: nil,
cd := ClientData{
isCrossDomain: false,
player: nil,
m: sync.Mutex{},
}
return cd
return &cd
}

View File

@@ -1,6 +1,8 @@
package entity
import (
"blazing/common/core"
"github.com/panjf2000/gnet/v2"
)
@@ -43,3 +45,16 @@ func (p *Player) SendPack(b []byte) error {
_, err := p.MainConn.Write(b)
return err
}
func ConutPlayer() int {
// v := reflect.ValueOf(&core.Mainplayer).Elem().FieldByName("m").Elem()
// return int(v.FieldByName("count").Int())
count := 0
core.Mainplayer.Range(func(key, value interface{}) bool {
count++
return true // 继续遍历
})
return count
//fmt.Println("元素数量:", count) // 输出: 3
}