/// <summary> /// Begins looking for a WebServer /// </summary> /// <param name="machineSearchCriteria">Machine specific criteria</param> /// <param name="astoriaMachineSearchCriteria">Astoria specific criteria</param> /// <param name="callback">WebServer return results</param> public void BeginLookup( MachineSearchCriteria machineSearchCriteria, AstoriaMachineSearchCriteria astoriaMachineSearchCriteria, EventHandler <WebServerLocatorCompleteEventArgs> callback) { if (callback == null) { throw new TaupoArgumentNullException("callback"); } this.IsComplete = false; this.callBack = callback; IQueryable <WebMachine> machinesQuery = this.strategy.WebServersQueryRoot; machinesQuery = this.ApplyMachineSearchCriteria(machinesQuery, machineSearchCriteria); machinesQuery = this.ApplyAstoriaMachineCriteria(machinesQuery, astoriaMachineSearchCriteria); machinesQuery = machinesQuery.OrderBy(m => m.LastUsed); this.strategy.BeginExecute(this.OnQueryComplete, machinesQuery); }
private IQueryable <WebMachine> ApplyMachineSearchCriteria(IQueryable <WebMachine> query, MachineSearchCriteria machineSearchCriteria) { if (machineSearchCriteria != null) { string serverLanguage = null; string hostArch = null; string skuType = null; string ndpVersion = null; string iisVersion = null; string ready = null; serverLanguage = MapLabServerLanguageToString(machineSearchCriteria.ServerLanguage); skuType = MapLabSkuToString(machineSearchCriteria.SkuType); ready = MapBooleanValueToString(machineSearchCriteria.Ready); if (machineSearchCriteria.ArchType != null) { hostArch = machineSearchCriteria.ArchType.ToString(); } if (machineSearchCriteria.InternetInformationServerMajorVersion != null) { iisVersion = MapInternetInformationServerVersionToString(machineSearchCriteria.InternetInformationServerMajorVersion); } ndpVersion = machineSearchCriteria.FrameworkVersion; this.machinesToAvoid = new string[0] { }; if (machineSearchCriteria != null) { this.machinesToAvoid = machineSearchCriteria.MachinesToAvoid.ToArray(); } if (serverLanguage != null) { query = query.Where(m => m.Locale == serverLanguage); } if (hostArch != null) { query = query.Where(m => m.Arch == hostArch); } if (iisVersion != null) { query = query.Where(m => m.InternetInformationMajorServerVersion == iisVersion); } if (ready != null) { query = query.Where(m => m.Ready == ready); } if (skuType != null) { query = query.Where(m => m.Sku == skuType); } if (ndpVersion != null) { query = query.Where(m => m.Build == ndpVersion); } } return(query); }