Example #1
0
 /// <summary>
 /// Release  any peer class resources.
 /// </summary>
 public void Close()
 {
     try
     {
         _closeGuardMutex.WaitOne();
         if (Connected)
         {
             Log.Logger.Info($"Closing down Peer {Encoding.ASCII.GetString(RemotePeerID)}...");
             Tc.UnMergePieceBitfield(this);
             if (Tc.peerSwarm.ContainsKey(Ip))
             {
                 if (Tc.peerSwarm.TryRemove(Ip, out Peer _))
                 {
                     Log.Logger.Info($"Dead Peer {Ip} removed from swarm.");
                 }
             }
             Connected = false;
             Log.Logger.Info($"Closed down {Encoding.ASCII.GetString(RemotePeerID)}.");
         }
     }
     catch (Exception ex)
     {
         Log.Logger.Error(ex);
     }
     _network?.Close();
     _network = null;
     _closeGuardMutex.ReleaseMutex();
 }