예제 #1
0
        public void Deregister(NetPeer peer)
        {
            if (peer == null)
            {
                return;
            }

            peer.Stop();

            peer.OnClose     -= OnClose;
            peer.OnReceive   -= OnReceive;
            peer.OnException -= OnException;

            if (peer.netType == NetworkType.KCP)
            {
                kcpPeers.TryRemove(peer.ConnId, out var _);
            }

            if (peer.netType == NetworkType.TCP)
            {
                tcpPeers.TryRemove(peer.ConnId, out var _);
            }

            if (channelPeers.ContainsKey(peer.ConnId))
            {
                channelPeers.TryRemove(peer.ConnId, out var _);
            }

            Log.Info(string.Format("DeregisterPeer: {0} {1} {2}", peer.ConnId, peer.RemoteAddress, peer.netType));
        }
예제 #2
0
        public bool Deregister(NetPeer peer)
        {
            if (peer == null)
            {
                return(false);
            }

            peer.Stop();

            peer.OnClose     -= OnClose;
            peer.OnReceive   -= OnReceive;
            peer.OnException -= OnException;

            if (peer.netType == NetworkType.KCP)
            {
                kcpPeers.TryRemove(peer.ConnId, out var _);
                foreach (var k in kcpPeers.Where(m => m.Value.ConnId == peer.ConnId).Select(m => m.Key).ToList())
                {
                    kcpPeers.TryRemove(k, out var _);
                }
            }

            if (peer.netType == NetworkType.TCP)
            {
                tcpPeers.TryRemove(peer.ConnId, out var _);
                foreach (var k in tcpPeers.Where(m => m.Value.ConnId == peer.ConnId).Select(m => m.Key).ToList())
                {
                    tcpPeers.TryRemove(k, out var _);
                }
            }

            if (channelPeers.ContainsKey(peer.ConnId))
            {
                channelPeers.TryRemove(peer.ConnId, out var _);
                foreach (var k in channelPeers.Where(m => m.Value.ConnId == peer.ConnId).Select(m => m.Key).ToList())
                {
                    channelPeers.TryRemove(k, out var _);
                }
            }

            Log.Info(string.Format("DeregisterPeer: {0} {1} {2}", peer.ConnId, peer.RemoteAddress, peer.netType));

            return(true);
        }