private AssistantTaskContext ProcessMailboxUnderPoisonControl(AssistantTaskContext context, EmergencyKit kit)
        {
            AIException          exception   = null;
            AssistantTaskContext nextContext = null;

            try
            {
                base.CatchMeIfYouCan(delegate
                {
                    AdminRpcMailboxData adminRpcMailboxData = context.MailboxData as AdminRpcMailboxData;
                    if (adminRpcMailboxData != null)
                    {
                        nextContext = this.ProcessAdminRpcMailboxUnderPoisonControl(context, kit);
                        return;
                    }
                    StoreMailboxData storeMailboxData = context.MailboxData as StoreMailboxData;
                    if (storeMailboxData != null)
                    {
                        nextContext = this.ProcessStoreMailboxUnderPoisonControl(context, kit);
                    }
                }, this.Assistant.NonLocalizedName);
            }
            catch (AIException ex)
            {
                this.LogAIException(context.MailboxData, ex);
                exception = ex;
            }
            this.PostProcessMailbox(exception, nextContext, context.MailboxData);
            return(nextContext);
        }
        // Token: 0x0600044C RID: 1100 RVA: 0x00015D5C File Offset: 0x00013F5C
        private AssistantTaskContext ProcessStoreMailbox(AssistantTaskContext context, EmergencyKit kit)
        {
            TimeBasedDatabaseJob.processMailboxTestHook.Value();
            StoreMailboxData     storeMailboxData = context.MailboxData as StoreMailboxData;
            AssistantTaskContext assistantTaskContext;

            using (StoreSession storeSession = this.OpenMailboxSession(storeMailboxData))
            {
                Stopwatch stopwatch = Stopwatch.StartNew();
                try
                {
                    if (context.Args == null)
                    {
                        context.Args = InvokeArgs.Create(storeSession, this.Driver.TimePerTask, storeMailboxData);
                    }
                    kit.SetContext(this.Assistant, storeMailboxData);
                    assistantTaskContext = context.Step(context);
                }
                finally
                {
                    kit.UnsetContext();
                    if (this.Driver.AssistantType.ControlDataPropertyDefinition != null && context.Args != null)
                    {
                        context.Args.StoreSession.Mailbox[this.Driver.AssistantType.ControlDataPropertyDefinition] = ControlData.Create(DateTime.UtcNow).ToByteArray();
                        context.Args.StoreSession.Mailbox.Save();
                    }
                }
                stopwatch.Stop();
                this.performanceCounters.AverageMailboxProcessingTime.IncrementBy(stopwatch.ElapsedTicks);
                this.performanceCounters.AverageMailboxProcessingTimeBase.Increment();
                if (assistantTaskContext == null)
                {
                    this.performanceCounters.MailboxesProcessed.Increment();
                }
            }
            return(assistantTaskContext);
        }
        // Token: 0x0600044A RID: 1098 RVA: 0x00015B58 File Offset: 0x00013D58
        private AssistantTaskContext ProcessAdminRpcMailboxUnderPoisonControl(AssistantTaskContext context, EmergencyKit kit)
        {
            TimeBasedDatabaseJob.processMailboxTestHook.Value();
            AssistantTaskContext result = null;
            Guid activityId             = (ActivityContext.ActivityId != null) ? ActivityContext.ActivityId.Value : Guid.Empty;

            if (context.Args == null)
            {
                context.Args = InvokeArgs.Create(null, this.Driver.TimePerTask, context.MailboxData);
            }
            AssistantsLog.LogStartProcessingMailboxEvent(activityId, this.Assistant as AssistantBase, context.MailboxData.MailboxGuid, context.MailboxData.DisplayName, this);
            try
            {
                kit.SetContext(this.Assistant, context.MailboxData);
                result = context.Step(context);
            }
            finally
            {
                kit.UnsetContext();
            }
            AssistantsLog.LogEndProcessingMailboxEvent(activityId, this.Assistant as AssistantBase, context.CustomDataToLog, context.MailboxData.MailboxGuid, context.MailboxData.DisplayName, this);
            return(result);
        }
        // Token: 0x0600044B RID: 1099 RVA: 0x00015C50 File Offset: 0x00013E50
        private AssistantTaskContext ProcessStoreMailboxUnderPoisonControl(AssistantTaskContext context, EmergencyKit kit)
        {
            StoreMailboxData     storeMailboxData = context.MailboxData as StoreMailboxData;
            AssistantTaskContext result           = null;
            Guid activityId = (ActivityContext.ActivityId != null) ? ActivityContext.ActivityId.Value : Guid.Empty;

            base.TracePfd("PFD AIS {0} {1}: ProcessMailbox: {2}", new object[]
            {
                23127,
                this,
                storeMailboxData.DisplayName
            });
            AssistantsLog.LogStartProcessingMailboxEvent(activityId, this.Assistant as AssistantBase, storeMailboxData.MailboxGuid, storeMailboxData.DisplayName, this);
            bool           flag          = false;
            IMailboxFilter mailboxFilter = this.Driver.AssistantType as IMailboxFilter;

            if (mailboxFilter != null && mailboxFilter.MailboxType.Contains(MailboxType.InactiveMailbox))
            {
                flag = true;
                ADSessionSettingsFactory.InactiveMailboxVisibilityEnabler.Enable();
            }
            try
            {
                result = this.ProcessStoreMailbox(context, kit);
            }
            finally
            {
                if (flag)
                {
                    ADSessionSettingsFactory.InactiveMailboxVisibilityEnabler.Disable();
                }
            }
            AssistantsLog.LogEndProcessingMailboxEvent(activityId, this.Assistant as AssistantBase, context.CustomDataToLog, storeMailboxData.MailboxGuid, storeMailboxData.DisplayName, this);
            return(result);
        }
 // Token: 0x0600024D RID: 589
 protected abstract AIException DangerousProcessItem(EmergencyKit kit, InterestingEvent interestingEvent);