public ClientEngine(EngineSettings settings, PeerListener listener, PieceWriter writer) { Check.Settings(settings); Check.Listener(listener); Check.Writer(writer); this.listener = listener; this.settings = settings; this.connectionManager = new ConnectionManager(this); RegisterDht(new NullDhtEngine()); this.diskManager = new DiskManager(this, writer); this.listenManager = new ListenManager(this); MainLoop.QueueTimeout(TimeSpan.FromMilliseconds(TickLength), delegate { if (IsRunning && !disposed) { LogicTick(); } return(!disposed); }); this.torrents = new List <TorrentManager>(); this.torrentsReadonly = new ReadOnlyCollection <TorrentManager> (torrents); CreateRateLimiters(); this.peerId = GeneratePeerId(); localPeerListener = new LocalPeerListener(this); localPeerManager = new LocalPeerManager(); LocalPeerSearchEnabled = SupportsLocalPeerDiscovery; listenManager.Register(listener); // This means we created the listener in the constructor if (listener.Endpoint.Port == 0) { listener.ChangeEndpoint(new IPEndPoint(IPAddress.Any, settings.ListenPort)); } }
public ClientEngine(EngineSettings settings, PeerListener listener) : this(settings, listener, new DiskWriter()) { }
public void Unregister(PeerListener listener) { listener.ConnectionReceived -= new EventHandler <NewConnectionEventArgs>(ConnectionReceived); }