// Token: 0x06001214 RID: 4628 RVA: 0x00038DB8 File Offset: 0x00036FB8 private static Server[] GetMailboxServers(ITopologyConfigurationSession configSession, bool localSiteOnly, LogMessageDelegate logger) { QueryFilter queryFilter = new AndFilter(new QueryFilter[] { new BitMaskAndFilter(ServerSchema.CurrentServerRole, 2UL), new ComparisonFilter(ComparisonOperator.NotEqual, ActiveDirectoryServerSchema.IsOutOfService, true), new ExistsFilter(ActiveDirectoryServerSchema.HostedDatabaseCopies) }); QueryFilter filter; if (PhysicalResourceLoadBalancing.IsDatacenter) { if (localSiteOnly) { ADSite localSite = configSession.GetLocalSite(); queryFilter = QueryFilter.AndTogether(new QueryFilter[] { queryFilter, new ComparisonFilter(ComparisonOperator.Equal, ServerSchema.ServerSite, localSite.Id) }); } QueryFilter mailboxServerVersionFilter = PhysicalResourceLoadBalancing.GetMailboxServerVersionFilter(); filter = QueryFilter.AndTogether(new QueryFilter[] { queryFilter, mailboxServerVersionFilter }); } else { filter = queryFilter; } PhysicalResourceLoadBalancing.LogVerbose(TaskVerboseStringHelper.GetFindDataObjectsVerboseString(configSession, typeof(Server), filter, null, false), logger); Server[] array = configSession.Find <Server>(null, QueryScope.SubTree, filter, null, 0); if (array == null || array.Length == 0) { PhysicalResourceLoadBalancing.LogVerbose(Strings.VerboseLbNoServerForDatabaseException("Can not find any available mailbox server."), logger); throw new NoServersForDatabaseException("Can not find any mailbox server in local site"); } PhysicalResourceLoadBalancing.LogVerbose(Strings.VerboseLbGeneralTrace(string.Format("Retrieved {0} mailbox servers.", array.Length)), logger); return(array); }