网络连接和同步map优化
This commit is contained in:
parent
7be8fe29fc
commit
e584d85231
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue