/// <summary> /// Stops the TorrentManager /// </summary> public void Stop() { if (State == TorrentState.Error) { _error = null; Mode = new StoppedMode(this); return; } if (Mode is StoppingMode) { return; } ClientEngine.MainLoop.QueueWait(delegate { if (State != TorrentState.Stopped) { #if !DISABLE_DHT _engine.DhtEngine.PeersFound -= DhtPeersFound; #endif Mode = new StoppingMode(this); } }); }
void Initialise(string savePath, string baseDirectory, IList <RawTrackerTier> announces) { _bitfield = new BitField(HasMetadata ? _torrent.Pieces.Count : 1); this._savePath = Path.Combine(savePath, baseDirectory); FinishedPieces = new Queue <int>(); _monitor = new ConnectionMonitor(); _inactivePeerManager = new InactivePeerManager(this); _peers = new PeerManager(); _pieceManager = new PieceManager(); _trackerManager = new TrackerManager(this, InfoHash, announces); Mode = new StoppedMode(this); CreateRateLimiters(); PieceHashed += (o, e) => PieceManager.UnhashedPieces[e.PieceIndex] = false; if (HasMetadata) { foreach (var file in _torrent.Files) { file.FullPath = Path.Combine(SavePath, file.Path); } } }