public IPv4PrefixMapSearchResult(int thread, uint address, IPv4Prefix prefix, int counter) { Thread = thread; Address = address; Prefix = prefix; Counter = counter; }
public void ParsePrefix() { var testPrefix = settings.Value.TestPrefix; var testCount = settings.Value.TestCount; IPv4Prefix x = IPv4Prefix.Parse(testPrefix); Console.WriteLine($"Test: {IPv4.ConvertToBitString(x.IP)} {x.ToString()} [ParsePrefix prefix:{testPrefix}]"); var sw = Stopwatch.StartNew(); for (int i = 0; i < testCount; i++) { _ = IPv4.ParsePrefix(testPrefix); } Console.WriteLine($" - {sw.ElapsedMilliseconds} ms"); }
public async Task <IPv4PrefixMap> RetrieveIPv4PrefixMap() { IPv4PrefixMap value; var networkMapPath = settings.Value.NetworkMapPath; var sw = Stopwatch.StartNew(); if (File.Exists(networkMapPath) && (DateTime.Now - File.GetLastWriteTime(networkMapPath)).TotalDays < 7) { value = await IPv4PrefixMap.ReadFile(networkMapPath); Console.WriteLine($" - Prefix map deserialization completed ({sw.ElapsedMilliseconds} ms)"); } else { //TODO: Convert to PLINQ expression? var awsRangeTask = Task.Run(() => services.GetRequiredService <IAwsRangeClient>().GetAwsIPRange()); var azureRangeTask = Task.Run(() => services.GetRequiredService <IAzureRangeClient>().GetAzureIPRange()); Task.WaitAll(new Task[] { awsRangeTask, azureRangeTask }); Console.WriteLine($" - Downloading IP Ranges completed ({sw.ElapsedMilliseconds} ms)"); sw.Restart(); var awsPrefixes = awsRangeTask.Result.IPv4Prefixes.Select(x => x.Prefix); var azurePrefixes = azureRangeTask.Result.Services.SelectMany(x => x.Value.AddressPrefixes.Select(IPv4Prefix.SetMaskFlag)); var prefixes = IPv4Prefix.Consolidate(awsPrefixes.Union(azurePrefixes)).ToList(); value = new IPv4PrefixMap(prefixes); Console.WriteLine($" - Constructing prefix map completed ({sw.ElapsedMilliseconds} ms)"); sw.Restart(); await value.WriteFile(networkMapPath); Console.WriteLine($" - Prefix map serialization completed ({sw.ElapsedMilliseconds} ms)"); } return(value); }