List <IPAddress> RetrieveIPAddresses(int countMax) { List <IPAddress> iPAddresses = new List <IPAddress>(); while (iPAddresses.Count < countMax) { if (AddressPool.Count == 0) { DownloadIPAddressesFromSeeds(); lock (LOCK_Peers) { AddressPool.RemoveAll( a => Peers.Any(p => p.GetID() == a.ToString())); } foreach (FileInfo file in DirectoryLogPeersDisposed.GetFiles()) { if (DateTime.Now.Subtract( file.LastAccessTime).TotalHours > 24) { file.Delete(); } else { AddressPool.RemoveAll( a => a.ToString() == file.Name); } } if (AddressPool.Count == 0) { return(iPAddresses); } } int randomIndex = RandomGenerator .Next(AddressPool.Count); IPAddress iPAddress = AddressPool[randomIndex]; AddressPool.Remove(iPAddress); if (iPAddresses.Any( ip => ip.ToString() == iPAddress.ToString())) { continue; } iPAddresses.Add(iPAddress); } return(iPAddresses); }
public Builder(AddressPool pAddressPool, Interface pInterface) { addressPool = pAddressPool; inter = pInterface; }
public Service(Localhost pLocalhost, AddressPool pAddressPool, Interface pInter) { localhost = pLocalhost; addressPool = pAddressPool; inter = pInter; }