IPAddressTestResult.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace FastGithub.DomainResolve
  5. {
  6. /// <summary>
  7. /// IP测速结果
  8. /// </summary>
  9. sealed class IPAddressTestResult
  10. {
  11. private static readonly TimeSpan lifeTime = TimeSpan.FromMinutes(2d);
  12. private readonly int creationTickCount = Environment.TickCount;
  13. /// <summary>
  14. /// 获取空的
  15. /// </summary>
  16. public static IPAddressTestResult Empty = new(Array.Empty<IPAddressElapsed>());
  17. /// <summary>
  18. /// 获取是否为空
  19. /// </summary>
  20. public bool IsEmpty => this.AddressElapseds.Length == 0;
  21. /// <summary>
  22. /// 获取是否已过期
  23. /// </summary>
  24. public bool IsExpired => lifeTime < TimeSpan.FromMilliseconds(Environment.TickCount - this.creationTickCount);
  25. /// <summary>
  26. /// 获取测速结果
  27. /// </summary>
  28. public IPAddressElapsed[] AddressElapseds { get; }
  29. /// <summary>
  30. /// 测速结果
  31. /// </summary>
  32. /// <param name="result"></param>
  33. public IPAddressTestResult(IEnumerable<IPAddressElapsed> addressElapseds)
  34. {
  35. this.AddressElapseds = addressElapseds.OrderBy(item => item.Elapsed).ToArray();
  36. }
  37. }
  38. }