// Token: 0x06000B0B RID: 2827 RVA: 0x00047C18 File Offset: 0x00045E18
        private void ProcessEvent(ADUser user, MailboxSession mailboxSession, StoreObject item)
        {
            Exception     ex            = null;
            StringBuilder stringBuilder = new StringBuilder();

            UMPartnerMessageAssistant.UMPartnerMessageRpcTargetPicker instance = UMPartnerMessageAssistant.UMPartnerMessageRpcTargetPicker.Instance;
            IADSystemConfigurationLookup iadsystemConfigurationLookup          = ADSystemConfigurationLookupFactory.CreateFromOrganizationId(user.OrganizationId);
            ProcessPartnerMessageRequest processPartnerMessageRequest          = new ProcessPartnerMessageRequest();

            processPartnerMessageRequest.MailboxGuid = mailboxSession.MailboxGuid;
            processPartnerMessageRequest.TenantGuid  = iadsystemConfigurationLookup.GetExternalDirectoryOrganizationId();
            processPartnerMessageRequest.ItemId      = item.Id.ToBase64String();
            LocalizedString partnerMessageDescription = UMPartnerMessageAssistant.GetPartnerMessageDescription(item);
            int             num  = 0;
            int             num2 = 0;

            for (;;)
            {
                IVersionedRpcTarget versionedRpcTarget = instance.PickNextServer(user.UMRecipientDialPlanId.ObjectGuid, out num);
                if (versionedRpcTarget == null)
                {
                    break;
                }
                try
                {
                    ex = null;
                    versionedRpcTarget.ExecuteRequest(processPartnerMessageRequest);
                    UMPartnerMessageAssistant.LogMessageProcessingSuccessEvent(partnerMessageDescription, user, versionedRpcTarget);
                    UMPartnerMessageAssistant.SafeDeleteItem(mailboxSession, item.Id);
                    goto IL_151;
                }
                catch (RpcException ex2)
                {
                    ex = ex2;
                    UMPartnerMessageAssistant.Tracer.TraceWarning <string, RpcException>(0L, "UMPMA.ProcessEvent({0}): {1}", versionedRpcTarget.Name, ex2);
                    stringBuilder.AppendLine(Strings.UMRpcError(versionedRpcTarget.Name, ex2.ErrorCode, ex2.Message));
                    if (UMErrorCode.IsPermanent(ex2.ErrorCode))
                    {
                        throw new SkipException(Strings.descUMServerFailure(versionedRpcTarget.Name, partnerMessageDescription, user.DistinguishedName), ex2);
                    }
                    if (UMErrorCode.IsNetworkError(ex2.ErrorCode))
                    {
                        instance.ServerUnavailable(versionedRpcTarget);
                    }
                }
                if (++num2 >= num)
                {
                    goto IL_151;
                }
            }
            UMPartnerMessageAssistant.LogNoServersAvailableEvent(partnerMessageDescription, user);
            throw new TransientMailboxException(Strings.descUMServerNotAvailable(partnerMessageDescription, user.DistinguishedName), null, UMPartnerMessageAssistant.RetrySchedule);
IL_151:
            if (ex != null)
            {
                UMPartnerMessageAssistant.LogMessageProcessingFailedEvent(partnerMessageDescription, user, stringBuilder.ToString());
                throw new TransientMailboxException(Strings.descUMAllServersFailed(partnerMessageDescription, user.DistinguishedName), ex, UMPartnerMessageAssistant.RetrySchedule);
            }
        }
 // Token: 0x06000B08 RID: 2824 RVA: 0x00047B20 File Offset: 0x00045D20
 private static void LogMessageProcessingSuccessEvent(LocalizedString partnerMsg, ADUser user, IVersionedRpcTarget server)
 {
     UmGlobals.ExEvent.LogEvent(UMEventLogConstants.Tuple_UMPartnerMessageSucceeded, null, new object[]
     {
         CommonUtil.ToEventLogString(partnerMsg),
         CommonUtil.ToEventLogString(user.DistinguishedName),
         CommonUtil.ToEventLogString(server.Name)
     });
 }