public Register ( TorrentManager manager ) : void | ||
manager | TorrentManager | |
Résultat | void |
public void Register(TorrentManager manager)
{
CheckDisposed();
Check.Manager(manager);
MainLoop.QueueWait(() =>
{
if (manager.Engine != null)
throw new TorrentException("This manager has already been registered");
if (Contains(manager.Torrent))
throw new TorrentException(
"A manager for this torrent has already been registered");
torrents.Add(manager);
manager.PieceHashed += PieceHashed;
manager.Engine = this;
manager.DownloadLimiter.Add(downloadLimiter);
manager.UploadLimiter.Add(uploadLimiter);
if (_fastResume != null)
{
var fastResume = _fastResume
.SingleOrDefault(fr => manager.InfoHash == fr.Infohash);
if (fastResume != null)
manager.LoadFastResume(fastResume);
}
if (dhtEngine != null && manager.Torrent != null && manager.Torrent.Nodes != null &&
dhtEngine.State != DhtState.Ready)
{
try
{
dhtEngine.Add(manager.Torrent.Nodes);
}
catch
{
// FIXME: Should log this somewhere, though it's not critical
}
}
});
if (TorrentRegistered != null)
TorrentRegistered(this, new TorrentEventArgs(manager));
}
public EngineTestRig(string savePath, int piecelength, PieceWriter writer) { if(writer == null) writer = new MemoryWriter(new NullWriter()); listener = new CustomListener(); engine = new ClientEngine(new EngineSettings(), listener, writer); torrentDict = CreateTorrent(piecelength); torrent = Torrent.Load(torrentDict); manager = new TorrentManager(torrent, savePath, new TorrentSettings()); engine.Register(manager); //manager.Start(); }