// Token: 0x060011D2 RID: 4562 RVA: 0x00067D78 File Offset: 0x00065F78
        protected List <MailboxData> GetReadyToExecuteJobs(IntegrityCheckQueryFlags flags)
        {
            List <MailboxData> list = new List <MailboxData>(10);

            PropValue[][] rows = null;
            try
            {
                TimeBasedAssistant.TrackAdminRpcCalls(base.DatabaseInfo, "Client=Maintenance", delegate(ExRpcAdmin rpcAdmin)
                {
                    rows = rpcAdmin.StoreIntegrityCheckEx(this.DatabaseInfo.Guid, Guid.Empty, Guid.Empty, 2U, (uint)flags, null, StoreIntegrityCheckAssistantBase.columnsToRequest);
                });
            }
            catch (MapiRetryableException innerException)
            {
                throw new SkipException(innerException);
            }
            catch (MapiPermanentException innerException2)
            {
                throw new SkipException(innerException2);
            }
            if (rows != null)
            {
                foreach (PropValue[] array in rows)
                {
                    list.Add(new StoreIntegrityCheckAssistantBase.StoreIntegrityCheckJob(base.DatabaseInfo.Guid, array[0].GetInt(), array[1].GetGuid(), array[2].GetGuid()));
                }
            }
            return(list);
        }
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            IntegrityCheckQueryFlags flags = IntegrityCheckQueryFlags.None;
            Guid guid = this.requestGuid;

            if (this.jobGuid != Guid.Empty)
            {
                flags = IntegrityCheckQueryFlags.QueryJob;
                guid  = this.jobGuid;
            }
            bool details = true;

            if (base.ParameterSetName == "Identity" && this.Detailed == false)
            {
                details = false;
            }
            List <StoreIntegrityCheckJob> storeIntegrityCheckJob = StoreIntegrityCheckAdminRpc.GetStoreIntegrityCheckJob(this.databaseObject, this.mailboxGuid, guid, flags, details, new Task.TaskErrorLoggingDelegate(base.WriteError), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose));

            if (storeIntegrityCheckJob != null)
            {
                this.WriteResult <StoreIntegrityCheckJob>(storeIntegrityCheckJob);
            }
            TaskLogger.LogExit();
        }
        internal static List <StoreIntegrityCheckJob> GetStoreIntegrityCheckJob(Database database, Guid mailboxGuid, Guid requestGuid, IntegrityCheckQueryFlags flags, bool details, Task.TaskErrorLoggingDelegate writeError, Task.TaskWarningLoggingDelegate writeWarning, Task.TaskVerboseLoggingDelegate writeVerbose)
        {
            List <StoreIntegrityCheckJob> jobs = new List <StoreIntegrityCheckJob>();

            try
            {
                StoreIntegrityCheckAdminRpc.ExecuteAdminRpc(database.Guid, delegate(ExRpcAdmin rpcAdmin, string serverFqdn)
                {
                    int num;
                    int num2;
                    rpcAdmin.GetAdminVersion(out num, out num2);
                    if (num < 7 || (num == 7 && num2 < 15))
                    {
                        throw new NotSupportedException();
                    }
                    PropValue[][] array = rpcAdmin.StoreIntegrityCheckEx(database.Guid, mailboxGuid, requestGuid, 2U, (uint)flags, null, StoreIntegrityCheckAdminRpc.JobPropTags);
                    foreach (PropValue[] propValues in array)
                    {
                        jobs.Add(new StoreIntegrityCheckJob(new DatabaseId(null, serverFqdn, database.Name, database.Guid), propValues));
                    }
                }, writeError, writeWarning, writeVerbose);
            }
            catch (MapiExceptionNetworkError innerException)
            {
                writeError(new OnlineIsIntegQueryJobException(database.Identity.ToString(), Strings.ServiceUnavaiable, innerException), ErrorCategory.ResourceUnavailable, database.Identity);
            }
            catch (MapiExceptionMdbOffline innerException2)
            {
                writeError(new OnlineIsIntegQueryJobException(database.Identity.ToString(), Strings.DatabaseOffline, innerException2), ErrorCategory.InvalidOperation, database.Identity);
            }
            catch (MapiPermanentException ex)
            {
                writeError(new OnlineIsIntegQueryJobException(database.Identity.ToString(), Strings.UnexpectedError(ex.ToString()), ex), ErrorCategory.InvalidOperation, database.Identity);
            }
            catch (MapiRetryableException ex2)
            {
                writeError(new OnlineIsIntegQueryJobException(database.Identity.ToString(), Strings.UnexpectedError(ex2.ToString()), ex2), ErrorCategory.InvalidOperation, database.Identity);
            }
            if (details)
            {
                return(jobs);
            }
            return(new List <StoreIntegrityCheckJob>
            {
                StoreIntegrityCheckJob.Aggregate(jobs)
            });
        }