Пример #1
0
        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));
                }
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
 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));
     }
 }