示例#1
0
        // 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);
        }