public StoppingMode(TorrentManager manager)
: base(manager)
{
CanAcceptConnections = false;
var engine = manager.Engine;
var hashingMode = manager.Mode as HashingMode;
if (hashingMode != null)
_handle.AddHandle(hashingMode.HashingWaitHandle, "Hashing");
if (manager.TrackerManager.CurrentTracker != null)
_handle.AddHandle(manager.TrackerManager.Announce(TorrentEvent.Stopped), "Announcing");
foreach (var id in manager.Peers.ConnectedPeers.Where(id => id.Connection != null))
id.Connection.Dispose();
manager.Peers.ClearAll();
_handle.AddHandle(engine.DiskManager.CloseFileStreams(manager), "DiskManager");
manager.Monitor.Reset();
manager.PieceManager.Reset();
engine.ConnectionManager.CancelPendingConnects(manager);
engine.Stop();
}