Пример #1
0
        private async Task CheckIpAsync(CancellationToken token)
        {
            if (token.IsCancellationRequested)
            {
                return;
            }

            try
            {
                Logger.LogTrace("Checking external IP at Ipfy.");
                var ip = await _httpClient.GetStringAsync(_url);

                Logger.LogTrace($"Received IP string is: {ip}.");
                var msg = new IpAddressDiscoveredEvent(IPAddress.Parse(ip));

                if (token.IsCancellationRequested)
                {
                    return;
                }

                await Publisher.PublishAsync(msg);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex, $"Failed to check IP at Ipfy: {ex.Message}");
            }
        }
Пример #2
0
        public async ValueTask HandleAsync(IpAddressDiscoveredEvent evt)
        {
            var oldValue = Interlocked.CompareExchange(ref _currentIpAddress, evt.IpAddress, evt.IpAddress);

            if (Equals(_currentIpAddress, oldValue))
            {
                return;
            }

            var message = new IpAddressChangedEvent(oldValue, evt.IpAddress);
            await _provider.Value.UpdateDnsAsync(message);
        }
Пример #3
0
 public async Task PublishAsync(IpAddressDiscoveredEvent evt)
 {
     await Task.CompletedTask;
 }