网络连接和同步map优化

This commit is contained in:
kercylan98 2023-04-22 13:20:53 +08:00
parent 7be8fe29fc
commit e584d85231
2 changed files with 30 additions and 0 deletions

View File

@ -46,6 +46,7 @@ type Conn struct {
gn gnet.Conn
kcp *kcp.UDPSession
write func(data []byte) error
data map[any]any
}
// Write 向连接中写入数据
@ -64,3 +65,23 @@ func (slf *Conn) Close() {
}
slf.write = nil
}
func (slf *Conn) SetData(key, value any) *Conn {
if slf.data == nil {
slf.data = map[any]any{}
}
slf.data[key] = value
return slf
}
func (slf *Conn) GetData(key any) any {
return slf.data[key]
}
func (slf *Conn) ReleaseData() *Conn {
for k := range slf.data {
delete(slf.data, k)
}
slf.data = nil
return slf
}

View File

@ -87,6 +87,15 @@ func (slf *Map[Key, Value]) Clear() {
}
}
func (slf *Map[Key, Value]) ClearHandle(handle func(key Key, value Value)) {
slf.lock.Lock()
defer slf.lock.Unlock()
for k, v := range slf.data {
handle(k, v)
delete(slf.data, k)
}
}
func (slf *Map[Key, Value]) Range(handle func(key Key, value Value)) {
slf.lock.RLock()
defer slf.lock.RUnlock()