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); } }
/// <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); }
// 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); } }
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(); } } }
protected virtual void RaisePeerRemoved(IFileTransferPeer peer) { PeerRemoved?.Invoke(this, new FileTransferPeerEventArgs(peer)); }