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}"); } }
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); }
public async Task PublishAsync(IpAddressDiscoveredEvent evt) { await Task.CompletedTask; }