private void UpdateTrackerAsync(object state) { object[] parameters = state as object[]; TrackerClient tracker = parameters[0] as TrackerClient; TrackerClientEvent @event = (TrackerClientEvent)parameters[1]; IPEndPoint localEP = parameters[2] as IPEndPoint; try { tracker.Update(@event, localEP); switch (@event) { case TrackerClientEvent.Started: case TrackerClientEvent.Completed: case TrackerClientEvent.None: if (_lookupOnly) { tracker.Update(TrackerClientEvent.Stopped, localEP); } if (tracker.Peers.Count > 0) { if (_ipv4DhtNode != null) { _ipv4DhtNode.AddNode(tracker.Peers); } if (_ipv6DhtNode != null) { _ipv6DhtNode.AddNode(tracker.Peers); } DiscoveredPeers?.Invoke(this, tracker.Peers); } break; } tracker.CustomUpdateInterval = _customUpdateInterval; } catch { if (tracker.RetriesDone < TRACKER_MAX_RETRIES) { tracker.CustomUpdateInterval = TRACKER_RETRY_UPDATE_INTERVAL_SECONDS; } else { tracker.CustomUpdateInterval = TRACKER_FAILED_UPDATE_INTERVAL_SECONDS; } } }
private void UpdateTrackerAsync(object state) { object[] parameters = state as object[]; TrackerClient tracker = parameters[0] as TrackerClient; TrackerClientEvent @event = (TrackerClientEvent)parameters[1]; IPEndPoint localEP = parameters[2] as IPEndPoint; try { tracker.Update(@event, localEP); _network.MakeConnection(tracker.Peers); } catch { } }