/// <summary> /// Creates a new TrackerUpdateEventArgs /// </summary> /// <param name="manager">The manager.</param> /// <param name="tracker">The tracker.</param> /// <param name="oldState">The old state.</param> /// <param name="newState">The new state.</param> public TrackerStateChangedEventArgs(TorrentManager manager, Tracker.Tracker tracker, TrackerState oldState, TrackerState newState) : base(manager) { Tracker = tracker; OldState = oldState; NewState = newState; }
public TrackerPeersAdded(TorrentManager manager, int peersAdded, int total, Tracker.Tracker tracker) : base(manager, peersAdded, total) { if (tracker == null) { throw new ArgumentNullException(nameof(tracker)); } Tracker = tracker; }
public WaitHandle Scrape(Tracker.Tracker tracker) { var tier = _trackerTiers.Find(t => t.Trackers.Contains(tracker)); if (tier == null) { return(new ManualResetEvent(true)); } return(Scrape(tracker, false)); }
public WaitHandle Announce(Tracker.Tracker tracker) { Check.Tracker(tracker); var tier = _trackerTiers.Find(t => t.Trackers.Contains(tracker)); if (tier == null) { throw new ArgumentException("Tracker has not been registered with the manager", nameof(tracker)); } var tevent = tier.SentStartedEvent ? TorrentEvent.None : TorrentEvent.Started; return(Announce(tracker, tevent, false, new ManualResetEvent(false))); }
protected TrackerResponseEventArgs(Tracker.Tracker tracker, object state, bool successful) { if (tracker == null) { throw new ArgumentNullException(nameof(tracker)); } if (!(state is TrackerConnectionID)) { throw new ArgumentException("The state object must be the same object as in the call to Announce", nameof(state)); } Id = (TrackerConnectionID)state; Successful = successful; Tracker = tracker; }
private WaitHandle Announce(Tracker.Tracker tracker, TorrentEvent clientEvent, bool trySubsequent, ManualResetEvent waitHandle) { ClientEngine engine = _manager.Engine; // If the engine is null, we have been unregistered if (engine == null) { waitHandle.Set(); return(waitHandle); } UpdateSucceeded = true; LastUpdated = DateTime.Now; EncryptionTypes e = engine.Settings.AllowedEncryption; var requireEncryption = !Toolbox.HasEncryption(e, EncryptionTypes.PlainText); var supportsEncryption = Toolbox.HasEncryption(e, EncryptionTypes.RC4Full) || Toolbox.HasEncryption(e, EncryptionTypes.RC4Header); requireEncryption = requireEncryption && ClientEngine.SupportsEncryption; supportsEncryption = supportsEncryption && ClientEngine.SupportsEncryption; IPEndPoint reportedAddress = engine.Settings.ReportedAddress; var ip = reportedAddress?.Address.ToString(); int port = reportedAddress?.Port ?? engine.Listener.Endpoint.Port; // FIXME: In metadata mode we need to pretend we need to download data otherwise // tracker optimisations might result in no peers being sent back. long bytesLeft = 1000; if (_manager.HasMetadata) { bytesLeft = (long)((1 - _manager.Bitfield.PercentComplete / 100.0) * _manager.Torrent.Size); } var p = new AnnounceParameters(_manager.Monitor.DataBytesDownloaded, _manager.Monitor.DataBytesUploaded, bytesLeft, clientEvent, _infoHash, requireEncryption, _manager.Engine.PeerId, ip, port) { SupportsEncryption = supportsEncryption }; var id = new TrackerConnectionID(tracker, trySubsequent, clientEvent, waitHandle); tracker.Announce(p, id); return(waitHandle); }
private WaitHandle Scrape(Tracker.Tracker tracker, bool trySubsequent) { if (tracker == null) { throw new ArgumentNullException(nameof(tracker)); } if (!tracker.CanScrape) { throw new TorrentException("This tracker does not support scraping"); } var id = new TrackerConnectionID(tracker, trySubsequent, TorrentEvent.None, new ManualResetEvent(false)); tracker.Scrape(new ScrapeParameters(_infoHash), id); return(id.WaitHandle); }
public override void OnAttach(Context c) { base.OnAttach(c); // Initialize the dialog for the NoLocation Exception this.NoLocationAlert = new AlertDialog.Builder(c); this.NoLocationAlert.SetTitle("Geen locatie beschikbaar"); this.NoLocationAlert.SetMessage("Momenteel kunnen wij uw locatie niet vaststellen. Mogelijk heeft u uw locatieservices uitstaan of duurt het nog even voordat we uw locatie kunnen ontvangen."); this.NoLocationAlert.SetNeutralButton("Oké", (senderAlert, arg) => { }); // Initialize the dialog for the NotOnMap Exception this.NotOnMapAlert = new AlertDialog.Builder(c); this.NotOnMapAlert.SetTitle("Buiten Utrecht"); this.NotOnMapAlert.SetMessage("U bevindt zich momenteel buiten het bereik wat deze app aankan. Ga naar Utrecht en omgeving om deze app te gebruiken en uw positie te centeren op de kaart."); this.NotOnMapAlert.SetNeutralButton("Oké", (senderAlert, arg) => { }); Bundle b = this.Arguments; TrackerParcel tp = (TrackerParcel)b.GetParcelable("Tracker"); this.Tracker = tp.Tracker; this.Arguments.Remove("Tracker"); }
private bool GetNextTracker(Tracker.Tracker tracker, out TrackerTier trackerTier, out Tracker.Tracker trackerReturn) { for (var i = 0; i < _trackerTiers.Count; i++) { for (var j = 0; j < _trackerTiers[i].Trackers.Count; j++) { if (_trackerTiers[i].Trackers[j] != tracker) { continue; } // If we are on the last tracker of this tier, check to see if there are more tiers if (j == (_trackerTiers[i].Trackers.Count - 1)) { if (i == (_trackerTiers.Count - 1)) { trackerTier = null; trackerReturn = null; return(false); } trackerTier = _trackerTiers[i + 1]; trackerReturn = trackerTier.Trackers[0]; return(true); } trackerTier = _trackerTiers[i]; trackerReturn = trackerTier.Trackers[j + 1]; return(true); } } trackerTier = null; trackerReturn = null; return(false); }
public TrackerParcel(Java.Lang.Object Tracker) { this.Tracker = (Tracker.Tracker)Tracker; }
public void SetTracker(Tracker.Tracker tracker) { this.tracker = tracker; this.tracker.TrackUpdated += this.UpdateTrackFromTracker; }
public void SetTracker(Tracker.Tracker tracker) { this.tracker = tracker; }
public ScrapeResponseEventArgs(Tracker.Tracker tracker, object state, bool successful) : base(tracker, state, successful) { }
public AnnounceResponseEventArgs(Tracker.Tracker tracker, object state, bool successful) : this(tracker, state, successful, new List <Peer>()) { }
public AnnounceResponseEventArgs(Tracker.Tracker tracker, object state, bool successful, List <Peer> peers) : base(tracker, state, successful) { Peers = peers; }