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); }
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); }