跳过某些记录不必要的测试
This commit is contained in:
parent
3bd0ff7fa2
commit
952ec5542f
@ -97,38 +97,44 @@ namespace FastGithub.DomainResolve
|
|||||||
{
|
{
|
||||||
foreach (var keyValue in this.dnsEndPointAddressElapseds)
|
foreach (var keyValue in this.dnsEndPointAddressElapseds)
|
||||||
{
|
{
|
||||||
var dnsEndPoint = keyValue.Key;
|
var oldValues = keyValue.Value;
|
||||||
var hashSet = new HashSet<IPAddressElapsed>();
|
if (oldValues.Length >= MAX_ADDRESS_COUNT)
|
||||||
|
|
||||||
foreach (var item in keyValue.Value)
|
|
||||||
{
|
{
|
||||||
hashSet.Add(item);
|
if (oldValues.Any(item => item.NeedUpdateElapsed()) == false)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var dnsEndPoint = keyValue.Key;
|
||||||
|
var hashSet = new HashSet<IPAddressElapsed>(oldValues);
|
||||||
await foreach (var adddress in this.dnsClient.ResolveAsync(dnsEndPoint, fastSort: false, cancellationToken))
|
await foreach (var adddress in this.dnsClient.ResolveAsync(dnsEndPoint, fastSort: false, cancellationToken))
|
||||||
{
|
{
|
||||||
hashSet.Add(new IPAddressElapsed(adddress, dnsEndPoint.Port));
|
hashSet.Add(new IPAddressElapsed(adddress, dnsEndPoint.Port));
|
||||||
}
|
}
|
||||||
|
|
||||||
var updateTasks = hashSet
|
// 两个以上才进行测速排序
|
||||||
.Where(item => item.CanUpdateElapsed())
|
if (hashSet.Count > 1)
|
||||||
.Select(item => item.UpdateElapsedAsync(cancellationToken));
|
{
|
||||||
|
var updateTasks = hashSet
|
||||||
|
.Where(item => item.NeedUpdateElapsed())
|
||||||
|
.Select(item => item.UpdateElapsedAsync(cancellationToken));
|
||||||
|
await Task.WhenAll(updateTasks);
|
||||||
|
}
|
||||||
|
|
||||||
await Task.WhenAll(updateTasks);
|
var newValues = hashSet
|
||||||
|
|
||||||
var addressElapseds = hashSet
|
|
||||||
.Where(item => item.Elapsed < TimeSpan.MaxValue)
|
.Where(item => item.Elapsed < TimeSpan.MaxValue)
|
||||||
.OrderBy(item => item.Elapsed)
|
.OrderBy(item => item.Elapsed)
|
||||||
.Take(count: MAX_ADDRESS_COUNT)
|
.Take(count: MAX_ADDRESS_COUNT)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
if (keyValue.Value.SequenceEqual(addressElapseds) == false)
|
if (oldValues.SequenceEqual(newValues) == false)
|
||||||
{
|
{
|
||||||
var addressArray = string.Join(", ", addressElapseds.Select(item => item.ToString()));
|
this.dnsEndPointAddressElapseds[dnsEndPoint] = newValues;
|
||||||
|
|
||||||
|
var addressArray = string.Join(", ", newValues.Select(item => item.ToString()));
|
||||||
this.logger.LogInformation($"{dnsEndPoint.Host}->[{addressArray}]");
|
this.logger.LogInformation($"{dnsEndPoint.Host}->[{addressArray}]");
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dnsEndPointAddressElapseds[dnsEndPoint] = addressElapseds;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@ namespace FastGithub.DomainResolve
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取延时
|
/// 获取延时
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TimeSpan Elapsed { get; private set; } = TimeSpan.MaxValue;
|
public TimeSpan Elapsed { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// IP延时
|
/// IP延时
|
||||||
@ -48,10 +48,10 @@ namespace FastGithub.DomainResolve
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否可以更新延时
|
/// 是否需求更新延时
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool CanUpdateElapsed()
|
public bool NeedUpdateElapsed()
|
||||||
{
|
{
|
||||||
return Environment.TickCount64 - this.lastTestTickCount > maxLifeTime;
|
return Environment.TickCount64 - this.lastTestTickCount > maxLifeTime;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user