public bool SendDisconnect(int connectionId) { Log.Info("SendDisconnect:{0}", connectionId); if (m_PeerManager.TryGetValue(connectionId, out var peer)) { var seq = peer.IncrementSendSequence(); var msg = new Disconnect(GetSendId(peer.ConnectionId), seq); var size = msg.Pack(m_SendBuffer, peer.Encryptor); m_Socket.Send(m_SendBuffer, 0, size, peer.EndPoint); m_PeerManager.Remove(connectionId); return(true); } return(false); }
public void BroadcastDisconnect() { Log.Info("BroadcastDisconnect"); var peers = m_PeerManager.GetPeers().ToArray(); foreach (var peer in peers) { var seq = peer.IncrementSendSequence(); var msg = new Disconnect(GetSendId(peer.ConnectionId), seq); var size = msg.Pack(m_SendBuffer, peer.Encryptor); m_Socket.Send(m_SendBuffer, 0, size, peer.EndPoint); } foreach (var peer in peers) { m_PeerManager.Remove(peer.ConnectionId); } }