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"); }
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); }
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"); }
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); }
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)); } }
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 }
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); } }
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"); }
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); }
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"); }
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); } } }
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"); }
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 override void Announce(AnnounceParameters parameters, object state) { var e = new AnnounceResponseEventArgs(this, state, true); RaiseAnnounceComplete(e); }
protected virtual void RaiseAnnounceComplete(AnnounceResponseEventArgs e) { var h = AnnounceComplete; h?.Invoke(this, e); }