Ejemplo n.º 1
0
        public void ReceiveDisconnectMessage(string guestId)
        {
            _log.LogInformation($"-> SignalRHost.{nameof(ReceiveDisconnectMessage)}");
            _log.LogDebug($"{nameof(guestId)} {guestId}");
            _log.LogDebug($"Local UserId: {PeerInfo.Message.PeerId}");

            var success = Guid.TryParse(guestId, out Guid guestGuid);

            if (!success ||
                guestGuid == Guid.Empty)
            {
                _log.LogWarning($"GuestId is not a GUID");
                return;
            }

            var existingGuest = ConnectedPeers.FirstOrDefault(g => g.PeerId == guestId);

            if (existingGuest == null)
            {
                _log.LogWarning("No existing guest found");
                return;
            }

            ConnectedPeers.Remove(existingGuest);
            UpdateConnectedPeers(null);
            RaiseUpdateEvent();
            _log.LogInformation($"SignalRHost.{nameof(ReceiveDisconnectMessage)} ->");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Disconnects a peer from this channel
        /// </summary>
        /// <param name="pred">The predicate used to determine what peer to disconnect</param>
        public void DisconnectPeer(Predicate <Peer.Peer> pred)
        {
            var peer = ConnectedPeers.First(new Func <Peer.Peer, bool>(pred));

            peer.Disconnect();
            lock (_lockObj)
                ConnectedPeers.Remove(peer);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Disconnects a peer from this channel
        /// </summary>
        /// <param name="id">The ID of the peer to disconnect</param>
        public void DisconnectPeer(int id)
        {
            var peer = ConnectedPeers.First(p => p.Identity.Id == id);

            peer.Disconnect();
            lock (_lockObj)
                ConnectedPeers.Remove(peer);
        }
Ejemplo n.º 4
0
        private void PeerDisconnect(object sender, PeerEventArgs e)
        {
            if (OnPeerDisconnected != null)
            {
                OnPeerDisconnected(null, e);
            }

            ConnectedPeers.Remove(e.Peer);

            if (_debug)
            {
                Debug.Print("Peer disconnected from: {0} with reason: {1}", e.Peer.RemoteEndPoint,
                            ((PeerDisconnectedEventArgs)e).DisconnectReason);
            }
        }
Ejemplo n.º 5
0
 private void AcceptPeer(Peer.Peer newPeer)
 {
     newPeer.OnPeerSynchronized +=
         (sender, e) => OnPeerConnected.Raise(this, new ChannelEventArgs(this, e.Peer));
     newPeer.OnPeerDisconnected +=
         (sender, e) =>
     {
         e.Peer.Dispose();
         lock (_lockObj)
             ConnectedPeers.Remove(e.Peer);
     };
     newPeer.OnRawPacketReceived        += RawPacketReceived;
     newPeer.OnSequenceFragmentReceived += (sender, e) => OnSequenceFragmentReceived.Raise(sender, e);
     lock (_lockObj)
         ConnectedPeers.Add(newPeer);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Disconnects a peer from this channel
 /// </summary>
 /// <param name="peer">The peer to disconnect</param>
 public void DisconnectPeer(Peer.Peer peer)
 {
     peer.Disconnect();
     lock (_lockObj)
         ConnectedPeers.Remove(peer);
 }