private void RemoteNode_Disconnected(object sender, bool error) { RemotePeer remoteNode = (RemotePeer)sender; remoteNode.Disconnected -= RemoteNode_Disconnected; remoteNode.InventoryReceived -= RemoteNode_InventoryReceived; remoteNode.PeersReceived -= RemoteNode_PeersReceived; if (error && remoteNode.ListenerEndpoint != null) { lock (badPeers) { badPeers.Add(remoteNode.ListenerEndpoint); } } lock (unconnectedPeers) { lock (connectedPeers) { if (remoteNode.ListenerEndpoint != null) { unconnectedPeers.Remove(remoteNode.ListenerEndpoint); } connectedPeers.Remove(remoteNode); } } }
private void OnConnected(RemotePeer remotePeer) { lock (connectedPeers) { connectedPeers.Add(remotePeer); } remotePeer.Disconnected += RemoteNode_Disconnected; remotePeer.InventoryReceived += RemoteNode_InventoryReceived; remotePeer.PeersReceived += RemoteNode_PeersReceived; remotePeer.StartProtocol(); }