protected override AnchorMailboxCacheEntry RefreshCacheEntry()
        {
            ADRawEntry adrawEntry = this.GetADRawEntry();

            if (adrawEntry == null)
            {
                ExTraceGlobals.VerboseTracer.TraceDebug <UserBasedAnchorMailbox>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: Anchor mailbox {0} has no AD object. Will use random server.", this);
                return(new AnchorMailboxCacheEntry());
            }
            string domainNameFromADRawEntry = UserBasedAnchorMailbox.GetDomainNameFromADRawEntry(adrawEntry);

            ExTraceGlobals.VerboseTracer.TraceDebug <UserBasedAnchorMailbox, string>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: The domain name of anchor mailbox {0} is {1}.", this, domainNameFromADRawEntry);
            ADObjectId adobjectId = (ADObjectId)adrawEntry[this.DatabaseProperty];

            if (adobjectId == null && this.MissingDatabaseHandler != null)
            {
                adobjectId = this.MissingDatabaseHandler(adrawEntry);
            }
            if (adobjectId == null)
            {
                base.RequestContext.Logger.AppendString(HttpProxyMetadata.RoutingHint, "-NoDatabase");
                OrganizationId organizationId             = (OrganizationId)adrawEntry[ADObjectSchema.OrganizationId];
                ADUser         defaultOrganizationMailbox = HttpProxyBackEndHelper.GetDefaultOrganizationMailbox(organizationId, (string)adrawEntry[ADObjectSchema.DistinguishedName]);
                if (defaultOrganizationMailbox == null || defaultOrganizationMailbox.Database == null)
                {
                    if ((Utilities.IsPartnerHostedOnly || VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled) && OrganizationId.ForestWideOrgId.Equals(organizationId))
                    {
                        ExTraceGlobals.VerboseTracer.TraceDebug <ADObjectId>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: Cannot find organization mailbox for datacenter FirstOrg user {0}. Will use random server.", adrawEntry.Id);
                        return(new AnchorMailboxCacheEntry
                        {
                            DomainName = domainNameFromADRawEntry
                        });
                    }
                    string text = string.Format("Unable to find organization mailbox for organization {0}", organizationId);
                    ExTraceGlobals.VerboseTracer.TraceError <string>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: {0}", text);
                    throw new HttpProxyException(HttpStatusCode.InternalServerError, HttpProxySubErrorCode.OrganizationMailboxNotFound, text);
                }
                else
                {
                    adobjectId = defaultOrganizationMailbox.Database;
                    ExTraceGlobals.VerboseTracer.TraceDebug <ADObjectId, ObjectId, ADObjectId>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: Anchor mailbox user {0} has no mailbox. Will use organization mailbox {1} with database {2}", adrawEntry.Id, defaultOrganizationMailbox.Identity, adobjectId);
                }
            }
            return(new AnchorMailboxCacheEntry
            {
                Database = adobjectId,
                DomainName = domainNameFromADRawEntry
            });
        }
        // Token: 0x06000192 RID: 402 RVA: 0x000081F0 File Offset: 0x000063F0
        protected override AnchorMailboxCacheEntry RefreshCacheEntry()
        {
            ADRawEntry adrawEntry = this.GetADRawEntry();

            if (adrawEntry == null)
            {
                if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1))
                {
                    ExTraceGlobals.VerboseTracer.TraceDebug <UserBasedAnchorMailbox>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: Anchor mailbox {0} has no AD object. Will use random server.", this);
                }
                return(new AnchorMailboxCacheEntry());
            }
            string domainNameFromADRawEntry = UserBasedAnchorMailbox.GetDomainNameFromADRawEntry(adrawEntry);

            if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1))
            {
                ExTraceGlobals.VerboseTracer.TraceDebug <UserBasedAnchorMailbox, string>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: The domain name of anchor mailbox {0} is {1}.", this, domainNameFromADRawEntry);
            }
            ADObjectId adobjectId = this.GetDatabaseFromADRawEntry(adrawEntry);

            if (adobjectId == null && this.MissingDatabaseHandler != null)
            {
                adobjectId = this.MissingDatabaseHandler(adrawEntry);
            }
            bool isOrganizationMailboxDatabase = false;

            if (adobjectId == null)
            {
                base.RequestContext.Logger.AppendString(3, "-NoDatabase");
                OrganizationId organizationId             = (OrganizationId)adrawEntry[ADObjectSchema.OrganizationId];
                ADUser         defaultOrganizationMailbox = HttpProxyBackEndHelper.GetDefaultOrganizationMailbox(organizationId, ((ADObjectId)adrawEntry[ADObjectSchema.Id]).ToString());
                if (defaultOrganizationMailbox == null || defaultOrganizationMailbox.Database == null)
                {
                    if (Utilities.IsPartnerHostedOnly || GlobalConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).MultiTenancy.Enabled)
                    {
                        if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1))
                        {
                            ExTraceGlobals.VerboseTracer.TraceDebug <ADObjectId>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: Cannot find organization mailbox for user {0}. Will use random server.", adrawEntry.Id);
                        }
                        return(new AnchorMailboxCacheEntry
                        {
                            DomainName = domainNameFromADRawEntry
                        });
                    }
                    string text = string.Format("Unable to find organization mailbox for organization {0}", organizationId);
                    if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(3))
                    {
                        ExTraceGlobals.VerboseTracer.TraceError <string>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: {0}", text);
                    }
                    throw new HttpProxyException(HttpStatusCode.InternalServerError, 3006, text);
                }
                else
                {
                    adobjectId = defaultOrganizationMailbox.Database;
                    isOrganizationMailboxDatabase = true;
                    if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1))
                    {
                        ExTraceGlobals.VerboseTracer.TraceDebug <ADObjectId, ObjectId, ADObjectId>((long)this.GetHashCode(), "[UserBasedAnchorMailbox::RefreshCacheEntry]: Anchor mailbox user {0} has no mailbox. Will use organization mailbox {1} with database {2}", adrawEntry.Id, defaultOrganizationMailbox.Identity, adobjectId);
                    }
                }
            }
            return(new AnchorMailboxCacheEntry
            {
                Database = adobjectId,
                DomainName = domainNameFromADRawEntry,
                IsOrganizationMailboxDatabase = isOrganizationMailboxDatabase
            });
        }