コード例 #1
0
        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;
                }
            }
        }
コード例 #2
0
ファイル: BitChat.cs プロジェクト: thaolt/BitChatClient
        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
            { }
        }