```
refactor(socket): 更新广播和退出逻辑中的类型引用 更新socket服务器中广播功能和退出功能的代码, 将player.Player类型替换为player.ClientData类型, 并相应调整方法调用以适应新的数据结构。 feat(map): 添加LoadOrStore方法支持 在并发安全的swiss map中新增LoadOrStore方法, 提供原子性的加载或存储功能,增强map的操作能力。 refactor(login): 优化登录逻辑中的玩家获取方式 重构登录控制器中获取玩家对象的方式, 直接从
This commit is contained in:
@@ -13,9 +13,9 @@ type Broadcast struct {
|
||||
|
||||
func (s *Server) Broadcast(t string) int {
|
||||
|
||||
player.Mainplayer.Range(func(key uint32, value *player.Player) bool {
|
||||
player.Mainplayer.Range(func(key uint32, value *player.ClientData) bool {
|
||||
|
||||
value.SendPackCmd(50003, &Broadcast{
|
||||
value.Player.SendPackCmd(50003, &Broadcast{
|
||||
Name: t,
|
||||
})
|
||||
return true
|
||||
@@ -42,32 +42,32 @@ func (s *Server) QuitSelf(a int) error {
|
||||
|
||||
s.quit = true
|
||||
if a != 0 {
|
||||
player.Mainplayer.Range(func(key uint32, value *player.Player) bool {
|
||||
player.Mainplayer.Range(func(key uint32, value *player.ClientData) bool {
|
||||
if value != nil {
|
||||
value.Kick(true)
|
||||
value.Player.Kick(true)
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
} else {
|
||||
|
||||
|
||||
go func() {
|
||||
player.Mainplayer.Range(func(key uint32, value *player.Player) bool {
|
||||
player.Mainplayer.Range(func(key uint32, value *player.ClientData) bool {
|
||||
if value != nil {
|
||||
value.KickMessage()
|
||||
value.Player.KickMessage()
|
||||
}
|
||||
return false
|
||||
})
|
||||
|
||||
<-time.After(10 * time.Minute)
|
||||
player.Mainplayer.Range(func(key uint32, value *player.Player) bool {
|
||||
player.Mainplayer.Range(func(key uint32, value *player.ClientData) bool {
|
||||
if value != nil {
|
||||
value.Kick(true)
|
||||
value.Player.Kick(true)
|
||||
}
|
||||
|
||||
|
||||
return false
|
||||
})
|
||||
os.Exit(0)
|
||||
os.Exit(0)
|
||||
}()
|
||||
}
|
||||
|
||||
|
||||
@@ -43,6 +43,10 @@ func WithSize[K comparable, V any](size uint64) func(csMap *CsMap[K, V]) {
|
||||
func (m *CsMap[K, V]) Store(key K, value V) {
|
||||
m.inner.Store(key, value)
|
||||
}
|
||||
func (m *CsMap[K, V]) LoadOrStore(key K, value V) (actual V, loaded bool) {
|
||||
T, OK := m.inner.LoadOrStore(key, value)
|
||||
return T.(V), OK
|
||||
}
|
||||
|
||||
// Delete 删除指定键,返回是否删除成功
|
||||
func (m *CsMap[K, V]) Delete(key K) bool {
|
||||
|
||||
Reference in New Issue
Block a user