Пример #1
0
        private static IList <BackEndServer> GetBackEndServerListForDatabase(ADObjectId database, OrganizationId organizationId, SmtpAddress primarySmtpAddress, int maxServers)
        {
            if (maxServers == 0)
            {
                return(new BackEndServer[0]);
            }
            if (database == null)
            {
                return(BackEndLocator.GetBackEndServerListForOrganization(organizationId, maxServers));
            }
            string domainName = null;

            if (organizationId != null && !organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                domainName = primarySmtpAddress.Domain;
            }
            IList <BackEndServer> result;

            using (MailboxServerLocator mailboxServerLocator = MailboxServerLocator.Create(database.ObjectGuid, domainName, database.PartitionFQDN))
            {
                BackEndServer server = mailboxServerLocator.GetServer();
                ExTraceGlobals.CafeTracer.TraceDebug <BackEndServer, ADObjectId>(0L, "[BackEndLocator.GetBackEndServerByDatabase] Returns back end server {0} for database {1}", server, database);
                IList <BackEndServer> list = new List <BackEndServer>();
                list.Add(server);
                int num = 1;
                foreach (KeyValuePair <Guid, BackEndServer> keyValuePair in mailboxServerLocator.AvailabilityGroupServers)
                {
                    if (num >= maxServers)
                    {
                        break;
                    }
                    if (!string.Equals(keyValuePair.Value.Fqdn, server.Fqdn, StringComparison.OrdinalIgnoreCase))
                    {
                        list.Add(keyValuePair.Value);
                        num++;
                    }
                }
                result = list;
            }
            return(result);
        }
Пример #2
0
        private static BackEndServer GetBackEndServerByDatabase(ADObjectId database, OrganizationId organizationId, SmtpAddress primarySmtpAddress)
        {
            if (database == null)
            {
                return(BackEndLocator.GetBackEndServerByOrganization(organizationId));
            }
            string domainName = null;

            if (organizationId != null && !organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                domainName = primarySmtpAddress.Domain;
            }
            BackEndServer result;

            using (MailboxServerLocator mailboxServerLocator = MailboxServerLocator.Create(database.ObjectGuid, domainName, database.PartitionFQDN))
            {
                BackEndServer server = mailboxServerLocator.GetServer();
                ExTraceGlobals.CafeTracer.TraceDebug <BackEndServer, ADObjectId>(0L, "[BackEndLocator.GetBackEndServerByDatabase] Returns back end server {0} for database {1}", server, database);
                result = server;
            }
            return(result);
        }