From e584d852315a919c79ba12552091f08ec6c36777 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Sat, 22 Apr 2023 13:20:53 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BD=91=E7=BB=9C=E8=BF=9E=E6=8E=A5=E5=92=8C?= =?UTF-8?q?=E5=90=8C=E6=AD=A5map=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/conn.go | 21 +++++++++++++++++++++ utils/synchronization/map.go | 9 +++++++++ 2 files changed, 30 insertions(+) diff --git a/server/conn.go b/server/conn.go index d88518e..89f951a 100644 --- a/server/conn.go +++ b/server/conn.go @@ -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 +} diff --git a/utils/synchronization/map.go b/utils/synchronization/map.go index 2dc2762..c559a80 100644 --- a/utils/synchronization/map.go +++ b/utils/synchronization/map.go @@ -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()