public void PeerDisconnected(IPeer peer, IDisconnectInfo info) { lock (_syncPeersList) { var sessionId = peer.GetSessionId(); if (!_sessionsToRooms.TryGetValue(sessionId, out var room)) { _logger.Error($"PeerDisconnected error: Can not get room for peer {sessionId}"); return; } if (room.PeerDisconnected(sessionId, info)) { _gameMetrics.TrackPeerDisconnected(); } _sessionsToRooms.TryRemove(sessionId, out _); _messageSender.CleanupPeerData(peer); if (room.IsGameFinished()) { DeleteRoom(room.GetRoomId()); } } }
private void OnDisconnected(IPEndPoint obj, IDisconnectInfo info) { if (_ep.Equals(obj)) { _connected = false; OnDisconnectedFromServer?.Invoke(info); } }
public void OnClientDisconnect(IPEndPoint endPoint, IDisconnectInfo info) { // _logger.Error($"Disconnected: {endPoint.Address} : {endPoint.Port}. Reason: {info.Reason}"); if (!PeerCollection.TryRemove(endPoint, out var peer)) { _logger.Warning( $"OnClientDisconnect error: can not find peer for endpoint {endPoint.Address}:{endPoint.Port}"); return; } PeerCollection.Remove(endPoint); ProcessDisconnectedPeer(peer, info); }
protected override void ProcessDisconnectedPeer(GamePeer peer, IDisconnectInfo info) { try { if (_roomManager.IsInRoom(peer.GetSessionId())) { _roomManager.PeerDisconnected(peer, info); } } finally { _messageSender.CleanupPeerData(peer); } }
public bool PeerDisconnected(Guid sessionId, IDisconnectInfo reason) { var peerRemoved = _roomPlayers.TryRemove(sessionId, out var roomPlayer); if (peerRemoved) { _packetSender.CleanupPeerData(roomPlayer.Peer); } _roomPropertiesContainer.RemovePlayer(sessionId); try { _roomController.ProcessPlayerDisconnected(sessionId, ResolveReason(reason.Reason), reason.Payload); } catch (Exception ex) { _logger.Error($"CleanUpPlayer error: {ex}"); } UpdateRoomStateOnMm(); return(peerRemoved); }
protected abstract void ProcessDisconnectedPeer(T peer, IDisconnectInfo info);
protected override void ProcessDisconnectedPeer(MmPeer peer, IDisconnectInfo info) { _matchMaker.RemovePlayer(peer.GetPeerId()); _messageSender.CleanupPeerData(peer); }
private void OnDisconnected(IDisconnectInfo disconnectInfo) { _logger.Info($"Disconnected from server: {disconnectInfo.Reason}"); OnDisconnectedFromServer?.Invoke(disconnectInfo); }