Beispiel #1
0
 protected virtual void OnPeerRemoved(Peer peer)
 {
     PeerRemoved?.Invoke(this, new PeerEventArgs()
     {
         IPAddress = peer.GetRemoteAddress().ToString(),
         Port      = peer.GetRemotePort().ToString()
     });
 }
        /**
         * Deletes the entry related to the peer with the specified key from the table.
         */
        public void del(string key)
        {
            PeerEntry removed = null;

            map.TryRemove(key, out removed);
            if (removed != null)
            {
                PeerRemoved?.Invoke(removed.Peer);
            }
        }
Beispiel #3
0
        /// <summary>
        ///   Deregister a peer.
        /// </summary>
        /// <param name="peer">
        ///   The peer to remove..
        /// </param>
        /// <remarks>
        ///   Remove all knowledge of the peer. The <see cref="PeerRemoved"/> event
        ///   is raised.
        /// </remarks>
        public void DeregisterPeer(Peer peer)
        {
            if (peer.Id == null)
            {
                throw new ArgumentNullException("peer.ID");
            }

            if (otherPeers.TryRemove(peer.Id.ToBase58(), out Peer found))
            {
                peer = found;
            }
            PeerRemoved?.Invoke(this, peer);
        }
Beispiel #4
0
        // Purge peers we haven't heard from for a while
        public void PurgePeers(int purgeTimeExitMs, int purgeTimeLostConnectionMs)
        {
            // Find list of peers to purge
            var now       = DateTime.Now;
            var purgeKeys = new List <string>();

            foreach (var peer in mPeers)
            {
                var timeMs = (now - peer.Value.TimeReceived).TotalMilliseconds;
                if (peer.Value.Info.State == State.Exit && timeMs >= purgeTimeExitMs || timeMs >= purgeTimeLostConnectionMs)
                {
                    purgeKeys.Add(peer.Key);
                }
            }
            // Purge peers
            foreach (var peerKey in purgeKeys)
            {
                Peer peer = mPeers[peerKey];
                mPeers.Remove(peerKey);
                PeerRemoved?.Invoke(peer);
            }
        }
Beispiel #5
0
 private void ReceiveMessageLoop()
 {
     try {
         while (Connected())
         {
             OnMessageReceived(new MessageReceivedEventArgs()
             {
                 Message = StreamReader.ReadLine(),
                 On      = DateTime.Now
             });
         }
     } catch (Exception) {
         if (Socket.Connected)
         {
             PeerRemoved?.Invoke(this, new PeerEventArgs()
             {
                 IPAddress = GetRemoteAddress().ToString(),
                 Port      = GetRemotePort().ToString()
             });
             Socket.Close();
         }
     }
 }
Beispiel #6
0
 protected virtual void RaisePeerRemoved(IFileTransferPeer peer)
 {
     PeerRemoved?.Invoke(this, new FileTransferPeerEventArgs(peer));
 }