private bool TryGetEhfMailFlowPartnerFromAD(string mailFlowPartnerDN, out EhfDomainSynchronizerVersion2.EhfMailFlowPartner ehfMailFlowPartner)
        {
            ehfMailFlowPartner = null;
            ExSearchResultEntry exSearchResultEntry = base.EhfConnection.ADAdapter.ReadObjectEntry(mailFlowPartnerDN, false, EhfDomainSynchronizerVersion2.MailFlowPartnerAttributes);

            if (exSearchResultEntry != null)
            {
                int invalidConnectorId  = EhfDomainSynchronizerVersion2.InvalidConnectorId;
                int invalidConnectorId2 = EhfDomainSynchronizerVersion2.InvalidConnectorId;
                if (!EhfDomainSynchronizerVersion2.TryGetMailFlowConnectorId(exSearchResultEntry, "msExchTransportResellerSettingsInboundGatewayID", base.DiagSession, out invalidConnectorId))
                {
                    base.DiagSession.LogAndTraceError("Failed to get the Inbound connectorId for partner <{0}>", new object[]
                    {
                        mailFlowPartnerDN
                    });
                }
                if (!EhfDomainSynchronizerVersion2.TryGetMailFlowConnectorId(exSearchResultEntry, "msExchTransportResellerSettingsOutboundGatewayID", base.DiagSession, out invalidConnectorId2))
                {
                    base.DiagSession.LogAndTraceError("Failed to get the Outbound connectorId for partner <{0}>", new object[]
                    {
                        mailFlowPartnerDN
                    });
                }
                ehfMailFlowPartner = new EhfDomainSynchronizerVersion2.EhfMailFlowPartner(invalidConnectorId, invalidConnectorId2);
                return(true);
            }
            return(false);
        }
        private bool TryGetEhfMailFlowPartner(ExSearchResultEntry entry, out EhfDomainSynchronizerVersion2.EhfMailFlowPartner ehfMailFlowPartner)
        {
            ehfMailFlowPartner = null;
            DirectoryAttribute attribute = entry.GetAttribute("msExchTransportResellerSettingsLink");

            if (attribute == null)
            {
                base.DiagSession.Tracer.TraceDebug(0L, "MailFlowPartner attribute not found");
                return(false);
            }
            string text = (string)attribute[0];

            if (string.IsNullOrEmpty(text))
            {
                base.DiagSession.Tracer.TraceDebug(0L, "MailFlowPartner attribute is null or empty");
                return(false);
            }
            if (ExSearchResultEntry.IsDeletedDN(text))
            {
                base.DiagSession.LogAndTraceError("Found a reference to deleted partner <{0}> from domain <{1}>. Ignoring the partner.", new object[]
                {
                    text,
                    entry.DistinguishedName
                });
                return(false);
            }
            if (this.ehfMailFlowPartnersCache == null)
            {
                base.DiagSession.Tracer.TraceDebug(0L, "Creating MailFlowPartner cache.");
                this.ehfMailFlowPartnersCache = new Dictionary <string, EhfDomainSynchronizerVersion2.EhfMailFlowPartner>();
            }
            if (!this.ehfMailFlowPartnersCache.TryGetValue(text, out ehfMailFlowPartner))
            {
                base.DiagSession.Tracer.TraceDebug(0L, "MailFlowPartner entry not found in cache. Loading from AD");
                if (this.TryGetEhfMailFlowPartnerFromAD(text, out ehfMailFlowPartner))
                {
                    this.ehfMailFlowPartnersCache.Add(text, ehfMailFlowPartner);
                }
                else
                {
                    base.DiagSession.LogAndTraceError("Could not find mailflow partner <{0}>, referenced from domain <{1}>", new object[]
                    {
                        text,
                        entry.DistinguishedName
                    });
                }
            }
            else
            {
                base.DiagSession.Tracer.TraceDebug(0L, "MailFlowPartner entry found in cache");
            }
            return(ehfMailFlowPartner != null);
        }