internal async Task StartAsync() { CheckDisposed(); if (!IsRunning) { IsRunning = true; Listener.Start(); LocalPeerDiscovery.Start(); await DhtEngine.StartAsync(await MaybeLoadDhtNodes()); if (Settings.AllowPortForwarding) { await PortForwarder.StartAsync(CancellationToken.None); } if (Listener is ISocketListener socketListener) { await PortForwarder.RegisterMappingAsync(new Mapping (Protocol.Tcp, socketListener.EndPoint.Port)); } else { await PortForwarder.RegisterMappingAsync(new Mapping (Protocol.Tcp, Settings.ListenPort)); } if (DhtListener.EndPoint != null) { await PortForwarder.RegisterMappingAsync(new Mapping (Protocol.Udp, DhtListener.EndPoint.Port)); } } }
internal void RegisterLocalPeerDiscovery(ILocalPeerDiscovery localPeerDiscovery) { if (LocalPeerDiscovery != null) { LocalPeerDiscovery.PeerFound -= HandleLocalPeerFound; LocalPeerDiscovery.Stop(); } LocalPeerDiscovery = localPeerDiscovery ?? new NullLocalPeerDiscovery(); if (LocalPeerDiscovery != null) { LocalPeerDiscovery.PeerFound += HandleLocalPeerFound; LocalPeerDiscovery.Start(); } }
internal async Task StartAsync() { CheckDisposed(); if (!IsRunning) { IsRunning = true; if (Listener.Status == ListenerStatus.NotListening) { Listener.Start(); } if (LocalPeerDiscovery.Status == ListenerStatus.NotListening) { LocalPeerDiscovery.Start(); } await PortForwarder.RegisterMappingAsync(new Mapping (Protocol.Tcp, Settings.ListenPort)); } }