// Token: 0x06001248 RID: 4680 RVA: 0x000689D4 File Offset: 0x00066BD4
        private AssistantTaskContext InitializeContextInternal(MailboxData mailbox, TimeBasedDatabaseJob job)
        {
            OABLogger.LogRecord(TraceType.FunctionTrace, "OABGeneratorAssistant.InitializeContextInternal: start", new object[0]);
            AssistantTaskContext result;

            try
            {
                if (mailbox is OABGeneratorMailboxData)
                {
                    result = OABGeneratorTaskContext.FromAssistantTaskContext(new AssistantTaskContext(mailbox, job, null));
                }
                else if (mailbox is StoreMailboxData)
                {
                    StoreMailboxData  storeMailboxData            = (StoreMailboxData)mailbox;
                    ADSessionSettings sessionSettings             = OABVariantConfigurationSettings.IsMultitenancyEnabled ? ADSessionSettings.FromTenantPartitionHint(storeMailboxData.TenantPartitionHint) : ADSessionSettings.FromRootOrgScopeSet();
                    ADUser            organizationalMailboxFromAD = this.GetOrganizationalMailboxFromAD(sessionSettings, storeMailboxData.Guid);
                    if (organizationalMailboxFromAD == null)
                    {
                        OABLogger.LogRecord(TraceType.ErrorTrace, "OABGeneratorAssistant.InitializeContext: ignoring scheduled job due to unknown organization mailbox: {0}", new object[]
                        {
                            storeMailboxData.Guid
                        });
                        result = null;
                    }
                    else if (organizationalMailboxFromAD.RecipientTypeDetails != RecipientTypeDetails.ArbitrationMailbox || !organizationalMailboxFromAD.PersistedCapabilities.Contains(Capability.OrganizationCapabilityOABGen))
                    {
                        OABLogger.LogRecord(TraceType.ErrorTrace, "OABGeneratorAssistant.InitializeContext: The mailbox {0} is not an organizational mailbox with OABGen capability", new object[]
                        {
                            storeMailboxData.Guid
                        });
                        result = null;
                    }
                    else
                    {
                        OABGeneratorMailboxData mailboxData             = new OABGeneratorMailboxData(organizationalMailboxFromAD.OrganizationId, base.DatabaseInfo.Guid, organizationalMailboxFromAD.ExchangeGuid, organizationalMailboxFromAD.DisplayName, organizationalMailboxFromAD.Sid, organizationalMailboxFromAD.PrimarySmtpAddress.Domain, Guid.Empty, storeMailboxData.TenantPartitionHint, string.Empty);
                        OABGeneratorTaskContext oabgeneratorTaskContext = OABGeneratorTaskContext.FromAssistantTaskContext(new AssistantTaskContext(mailboxData, job, null));
                        oabgeneratorTaskContext.OrganizationMailbox = organizationalMailboxFromAD;
                        result = oabgeneratorTaskContext;
                    }
                }
                else
                {
                    OABLogger.LogRecord(TraceType.ErrorTrace, "OABGeneratorAssistant.InitializeContext: MailboxData is neither StoreMailboxData nor OABGeneratorMailboxData", new object[0]);
                    result = null;
                }
            }
            catch (CannotResolveExternalDirectoryOrganizationIdException ex)
            {
                OABLogger.LogRecord(TraceType.ErrorTrace, "OABGeneratorAssistant.InitializeContext: {0}", new object[]
                {
                    ex.ToString()
                });
                result = null;
            }
            finally
            {
                OABLogger.LogRecord(TraceType.FunctionTrace, "OABGeneratorAssistant.InitializeContextInternal: finish", new object[0]);
            }
            return(result);
        }
        // Token: 0x060000E2 RID: 226 RVA: 0x00005778 File Offset: 0x00003978
        public void Invoke(InvokeArgs invokeArgs, List <KeyValuePair <string, object> > customDataToLog = null)
        {
            StoreSession storeSession = invokeArgs.StoreSession;
            Guid         databaseGuid = invokeArgs.MailboxData.DatabaseGuid;
            string       displayName  = invokeArgs.MailboxData.DisplayName;
            Guid         mailboxGuid  = Guid.Empty;

            if (customDataToLog == null)
            {
                customDataToLog = new List <KeyValuePair <string, object> >();
            }
            StoreMailboxData storeMailboxData = invokeArgs.MailboxData as StoreMailboxData;

            if (storeMailboxData != null)
            {
                mailboxGuid = storeMailboxData.Guid;
            }
            using (new GuidTraceFilter(databaseGuid, mailboxGuid))
            {
                TimeBasedAssistant.Tracer.TraceDebug <TimeBasedAssistant, string>((long)this.GetHashCode(), "{0}: Started invoke for mailbox {1}.", this, displayName);
                if (storeMailboxData != null)
                {
                    TraceContext.Set(storeSession);
                }
                try
                {
                    invokeArgs.ActivityId = ((ActivityContext.ActivityId != null) ? ActivityContext.ActivityId.Value : Guid.Empty);
                    this.InvokeInternal(invokeArgs, customDataToLog);
                }
                finally
                {
                    TraceContext.Reset();
                    TimeBasedAssistant.Tracer.TraceDebug <TimeBasedAssistant, string>((long)this.GetHashCode(), "{0}: Ended invoke for mailbox {1}.", this, displayName);
                    TimeBasedAssistant.TracerPfd.TracePfd <int, TimeBasedAssistant, string>((long)this.GetHashCode(), "PFD IWE {0} {1}: Invoke completed for mailbox '{2}'.", 22167, this, displayName);
                }
            }
        }