Example #1
0
        public void ScrapeTest()
        {
            var t = TrackerFactory.Create(new Uri(Prefix.Substring(0, Prefix.Length - 1)));

            Assert.IsTrue(t.CanScrape, "#1");
            var id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e)
            {
                p = e;
                id.WaitHandle.Set();
            };
            var pars = new AnnounceParameters {
                PeerId = "id", InfoHash = new InfoHash(new byte[20])
            };

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#2");
            Assert.IsTrue(p.Successful, "#3");
            Assert.AreEqual(1, t.Complete, "#1");
            Assert.AreEqual(0, t.Incomplete, "#2");
            Assert.AreEqual(0, t.Downloaded, "#3");
        }
Example #2
0
        private void OfflineAnnounceTest()
        {
            var udpTracker = (UdpTracker)TrackerFactory.Create(new Uri("udp://127.0.0.1:57532/announce"));

            udpTracker.RetryDelay = TimeSpan.FromMilliseconds(500);
            var id = new TrackerConnectionID(udpTracker, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            udpTracker.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e)
            {
                p = e;
                id.WaitHandle.Set();
            };
            var pars = new AnnounceParameters
            {
                InfoHash = new InfoHash(new byte[20]),
                PeerId   = ""
            };

            udpTracker.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsFalse(p.Successful);
        }
Example #3
0
        public void AddPeer(Peer p)
        {
            TrackerConnectionID       id = new TrackerConnectionID(this, false, TorrentEvent.None, new ManualResetEvent(false));
            AnnounceResponseEventArgs e  = new AnnounceResponseEventArgs(this, id, true);

            e.Peers.Add(p);
            RaiseAnnounceComplete(e);
            Assert.IsTrue(id.WaitHandle.WaitOne(1000, true), "#1 Tracker never raised the AnnounceComplete event");
        }
Example #4
0
        public void AddPeer(Peer p)
        {
//            var id = new TrackerConnectionID(this, false, TorrentEvent.None, null);
            var e = new AnnounceResponseEventArgs(this, null, true);

            e.Peers.Add(p);
            e.Successful = true;
            RaiseAnnounceComplete(e);
        }
        public void AddFailedPeer(Peer p)
        {
            TrackerConnectionID       id = new TrackerConnectionID(this, true, TorrentEvent.None, null);
            AnnounceResponseEventArgs e  = new AnnounceResponseEventArgs(this, null, true);

            e.Peers.Add(p);
            e.Successful = false;
            RaiseAnnounceComplete(e);
        }
Example #6
0
        async void HandleTrackerAnnounceComplete(object o, AnnounceResponseEventArgs e)
        {
            if (e.Successful)
            {
                await ClientEngine.MainLoop;

                Peers.BusyPeers.Clear();
                int count = await AddPeersAsync(e.Peers, true);

                RaisePeersFound(new TrackerPeersAdded(this, count, e.Peers.Count, e.Tracker));
            }
        }
Example #7
0
        public void AddFailedPeer(Peer p)
        {
            TrackerConnectionID       id = new TrackerConnectionID(this, true, TorrentEvent.None, new ManualResetEvent(false));
            AnnounceResponseEventArgs e  = new AnnounceResponseEventArgs(this, id, false);

            e.Peers.Add(p);
            RaiseAnnounceComplete(e);
#if NETSTANDARD1_5
            Assert.True(id.WaitHandle.WaitOne(1000), "#2 Tracker never raised the AnnounceComplete event");
#else
            Assert.True(id.WaitHandle.WaitOne(1000, true), "#2 Tracker never raised the AnnounceComplete event");
#endif
        }
Example #8
0
 public static void HandleAnnounceComplete(object sender, AnnounceResponseEventArgs e)
 {
     logger.DebugFormat("AnnounceComplete. Tracker={0}, Successful={1}",
                        e.Tracker.Uri,
                        e.Successful);
     if (e.Successful)
     {
         logger.DebugFormat("Tracker: Peers={2}, Complete={0}, Incomplete={1}",
                            e.Tracker.Complete,
                            e.Tracker.Incomplete,
                            e.Peers.Count);
         e.Peers.ForEach(x => logger.DebugFormat("Peer: {0}", x.ToString()));
     }
     else
     {
         logger.DebugFormat("Announce failed: {0}", e.Tracker.FailureMessage);
     }
 }
Example #9
0
        public void AnnounceTest()
        {
            HTTPTracker         t  = (HTTPTracker)TrackerFactory.Create(new Uri(prefix));
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e) {
                p = e;
                id.WaitHandle.Set();
            };
            MonoTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.PeerId   = "id";
            pars.InfoHash = new InfoHash(new byte[20]);

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsTrue(p.Successful);
            Assert.AreEqual(keys[0].ToLowerInvariant(), t.Key.ToLowerInvariant(), "#2");
        }
Example #10
0
        void OfflineAnnounceTest()
        {
            UdpTracker t = (UdpTracker)TrackerFactory.Create(new Uri("udp://127.0.0.1:57532/announce"));

            t.RetryDelay = TimeSpan.FromMilliseconds(500);
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e) {
                p = e;
                id.WaitHandle.Set();
            };
            System.Net.BitTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.InfoHash = new InfoHash(new byte[20]);
            pars.PeerId   = "";

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.NotNull(p);
            Assert.False(p.Successful);
        }
Example #11
0
        public void AnnounceTest()
        {
            UdpTracker          t  = (UdpTracker)TrackerFactory.Create(new Uri(prefix));
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e)
            {
                p = e;
                id.WaitHandle.Set();
            };
            System.Net.BitTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.InfoHash = new InfoHash(new byte[20]);
            pars.PeerId   = "";

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.NotNull(p);
            Assert.True(p.Successful);
            //Assert.Equal(keys[0], t.Key, "#2");
        }
Example #12
0
        private void OnAnnounceComplete(object sender, AnnounceResponseEventArgs e)
        {
            UpdateSucceeded = e.Successful;
            if (_manager.Engine == null)
            {
                e.Id.WaitHandle.Set();
                return;
            }

            if (e.Successful)
            {
                _manager.Peers.BusyPeers.Clear();
                var count = _manager.AddPeersCore(e.Peers);
                _manager.RaisePeersFound(new TrackerPeersAdded(_manager, count, e.Peers.Count, e.Tracker));

                var tier = _trackerTiers.Find(delegate(TrackerTier t) { return(t.Trackers.Contains(e.Tracker)); });
                if (tier != null)
                {
                    Toolbox.Switch(tier.Trackers, 0, tier.IndexOf(e.Tracker));
                    Toolbox.Switch(_trackerTiers, 0, _trackerTiers.IndexOf(tier));
                }
                e.Id.WaitHandle.Set();
            }
            else
            {
                TrackerTier     tier;
                Tracker.Tracker tracker;

                if (!e.Id.TrySubsequent || !GetNextTracker(e.Tracker, out tier, out tracker))
                {
                    e.Id.WaitHandle.Set();
                }
                else
                {
                    Announce(tracker, e.Id.TorrentEvent, true, e.Id.WaitHandle);
                }
            }
        }
Example #13
0
        public void AnnounceTest()
        {
            var udpTracker = (UdpTracker)TrackerFactory.Create(new Uri(Prefix));
            var id         = new TrackerConnectionID(udpTracker, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            udpTracker.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e)
            {
                p = e;
                id.WaitHandle.Set();
            };
            var pars = new AnnounceParameters
            {
                InfoHash = new InfoHash(new byte[20]),
                PeerId   = ""
            };

            udpTracker.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsTrue(p.Successful);
            //Assert.AreEqual(keys[0], t.Key, "#2");
        }
Example #14
0
        public void AnnounceTest()
        {
            var t  = (HTTPTracker)TrackerFactory.Create(new Uri(Prefix));
            var id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += (o, e) =>
            {
                p = e;
                id.WaitHandle.Set();
            };
            var pars = new AnnounceParameters
            {
                PeerId   = "id",
                InfoHash = new InfoHash(new byte[20])
            };

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.IsNotNull(p, "#1");
            Assert.IsTrue(p.Successful);
            Assert.AreEqual(_keys[0], t.Key, "#2");
        }
        public void ScrapeTest()
        {
            Tracker.Tracker t = TrackerFactory.Create(new Uri(prefix.Substring(0, prefix.Length - 1)));
            Assert.True(t.CanScrape, "#1");
            TrackerConnectionID id = new TrackerConnectionID(t, false, TorrentEvent.Started, new ManualResetEvent(false));

            AnnounceResponseEventArgs p = null;

            t.AnnounceComplete += delegate(object o, AnnounceResponseEventArgs e) {
                p = e;
                id.WaitHandle.Set();
            };
            System.Net.BitTorrent.Client.Tracker.AnnounceParameters pars = new AnnounceParameters();
            pars.PeerId   = "id";
            pars.InfoHash = new InfoHash(new byte[20]);

            t.Announce(pars, id);
            Wait(id.WaitHandle);
            Assert.NotNull(p);
            Assert.True(p.Successful, "#3");
            Assert.Equal(1, t.Complete);
            Assert.Equal(0, t.Incomplete);
            Assert.Equal(0, t.Downloaded);
        }
 public void AddPeer(Peer p)
 {
     //            var id = new TrackerConnectionID(this, false, TorrentEvent.None, null);
     var e = new AnnounceResponseEventArgs(this, null, true);
     e.Peers.Add(p);
     e.Successful = true;
     RaiseAnnounceComplete(e);
 }
Example #17
0
        public override void Announce(AnnounceParameters parameters, object state)
        {
            var e = new AnnounceResponseEventArgs(this, state, true);

            RaiseAnnounceComplete(e);
        }
Example #18
0
        protected virtual void RaiseAnnounceComplete(AnnounceResponseEventArgs e)
        {
            var h = AnnounceComplete;

            h?.Invoke(this, e);
        }