2025-12-09 02:48:41 +08:00
|
|
|
|
package cool
|
|
|
|
|
|
|
|
|
|
|
|
// 存值示例
|
2026-03-02 18:34:20 +08:00
|
|
|
|
func AddClient(id uint32, client *ClientHandler) {
|
2025-12-09 02:48:41 +08:00
|
|
|
|
// 普通map:Clientmap[id] = client
|
|
|
|
|
|
Clientmap.Store(id, client) // sync.Map存值
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-05 21:59:22 +08:00
|
|
|
|
// 清理指定client(uid=100000*onlineID+port)
|
|
|
|
|
|
func DeleteClientOnly(uid uint32) {
|
|
|
|
|
|
Clientmap.Delete(uid)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 清理指定client(onlineID+port)
|
|
|
|
|
|
func DeleteClient(id, port uint32) {
|
|
|
|
|
|
Clientmap.Delete(100000*id + port)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-12-09 02:48:41 +08:00
|
|
|
|
// 取值示例
|
2026-03-02 23:59:15 +08:00
|
|
|
|
func GetClient(id, port uint32) (*ClientHandler, bool) {
|
2025-12-09 02:48:41 +08:00
|
|
|
|
// 普通map:client, ok := Clientmap[id]
|
2026-03-02 23:59:15 +08:00
|
|
|
|
val, ok := Clientmap.Load(100000*id + port) // sync.Map取值
|
|
|
|
|
|
if !ok {
|
|
|
|
|
|
return nil, false
|
|
|
|
|
|
}
|
|
|
|
|
|
// 类型断言(确保value是*ClientHandler)
|
|
|
|
|
|
client, ok := val.(*ClientHandler)
|
|
|
|
|
|
return client, ok
|
|
|
|
|
|
}
|
|
|
|
|
|
func GetClientOnly(uid uint32) (*ClientHandler, bool) {
|
|
|
|
|
|
// 普通map:client, ok := Clientmap[id]
|
|
|
|
|
|
val, ok := Clientmap.Load(uid) // sync.Map取值
|
2025-12-09 02:48:41 +08:00
|
|
|
|
if !ok {
|
|
|
|
|
|
return nil, false
|
|
|
|
|
|
}
|
|
|
|
|
|
// 类型断言(确保value是*ClientHandler)
|
|
|
|
|
|
client, ok := val.(*ClientHandler)
|
|
|
|
|
|
return client, ok
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type ClientHandler struct {
|
|
|
|
|
|
KickPerson func(uint32) error //踢人,这里是返回具体的logic
|
|
|
|
|
|
QuitSelf func(int) error //关闭服务器进程
|
|
|
|
|
|
Broadcast func(string) int //全服广播,返回的是在线人数
|
|
|
|
|
|
}
|