From 6144dd6bf057d04e94a2244bf2e2933536a069d4 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Wed, 5 Jul 2023 14:06:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E5=9C=A8=E9=87=8D?= =?UTF-8?q?=E8=BF=9E=E7=AD=89=E6=83=85=E5=86=B5=E6=97=B6=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=20server.Conn.Reuse=20=E5=87=BD=E6=95=B0=E9=87=8D=E7=94=A8?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/conn.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/server/conn.go b/server/conn.go index d85200f..d082ebd 100644 --- a/server/conn.go +++ b/server/conn.go @@ -79,14 +79,39 @@ type Conn struct { packets []*connPacket } +// Reuse 重用连接 +// - 重用连接时,会将当前连接的数据复制到新连接中 +// - 通常在于连接断开后,重新连接时使用 +func (slf *Conn) Reuse(conn *Conn) { + slf.mutex.Lock() + conn.mutex.Lock() + defer func() { + slf.mutex.Unlock() + conn.mutex.Unlock() + }() + slf.Close() + slf.remoteAddr = conn.remoteAddr + slf.ip = conn.ip + slf.ws = conn.ws + slf.gn = conn.gn + slf.kcp = conn.kcp + slf.data = conn.data + slf.packetPool = conn.packetPool + slf.packets = conn.packets +} + +// RemoteAddr 获取远程地址 func (slf *Conn) RemoteAddr() net.Addr { return slf.remoteAddr } +// GetID 获取连接ID +// - 为远程地址的字符串形式 func (slf *Conn) GetID() string { return slf.remoteAddr.String() } +// GetIP 获取连接IP func (slf *Conn) GetIP() string { return slf.ip }