// Token: 0x060011B3 RID: 4531 RVA: 0x000679D8 File Offset: 0x00065BD8 protected List <MailboxData> GetMailboxesToProcess(MailboxTableFlags mailboxTableFlags) { List <MailboxData> list = new List <MailboxData>(10); PropValue[][] rows = null; try { TimeBasedAssistant.TrackAdminRpcCalls(base.DatabaseInfo, "Client=Maintenance", delegate(ExRpcAdmin rpcAdmin) { rows = rpcAdmin.GetMailboxTableInfo(this.DatabaseInfo.Guid, Guid.Empty, mailboxTableFlags, StoreMaintenanceAssistant.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 StoreMaintenanceAssistant.MaintenanceMailboxData(array[0].GetGuid(), base.DatabaseInfo.Guid, array[1].GetInt(), array[2].GetGuid())); } } return(list); }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); foreach (Database database in this.databases) { try { Guid mailboxGuid = Guid.Empty; MailboxTableFlags mailboxTableFlags = MailboxTableFlags.MailboxTableFlagsNone; if (null != this.identity) { mailboxGuid = this.identity.MailboxGuid; } if (this.isRunningMailboxStatisticsTask) { mailboxTableFlags |= MailboxTableFlags.IncludeSoftDeletedMailbox; } QueryFilter filter = new MailboxContextFilter(mailboxGuid, (ulong)((long)mailboxTableFlags), this.NoADLookupForMailboxStatistics); IEnumerable <TPresentationObject> enumerable = this.mapiSession.FindPaged <TDataObject, TPresentationObject>(filter, MapiTaskHelper.ConvertDatabaseADObjectToDatabaseId(database), QueryScope.SubTree, null, 0, 0); foreach (TPresentationObject tpresentationObject in enumerable) { try { MailboxId mailboxId = tpresentationObject.Identity as MailboxId; if (this.Identity == null || (null != mailboxId && ((Guid.Empty != this.identity.MailboxGuid && this.identity.MailboxGuid == mailboxId.MailboxGuid) || (!string.IsNullOrEmpty(this.identity.MailboxExchangeLegacyDn) && string.Equals(this.identity.MailboxExchangeLegacyDn, mailboxId.MailboxExchangeLegacyDn, StringComparison.OrdinalIgnoreCase))))) { if (this.isRunningLogonStatisticsTask) { ((LogonStatistics)((object)tpresentationObject)).ServerName = database.ServerName; ((LogonStatistics)((object)tpresentationObject)).DatabaseName = database.Name; } else if (this.isRunningResourceMonitorDigestTask) { ((MailboxResourceMonitor)((object)tpresentationObject)).ServerName = this.server.Name; ((MailboxResourceMonitor)((object)tpresentationObject)).DatabaseName = database.Name; ((MailboxResourceMonitor)((object)tpresentationObject)).IsDatabaseCopyActive = (database.Server.ObjectGuid == this.server.Guid); } else if (this.isRunningMailboxStatisticsTask) { Microsoft.Exchange.Management.MapiTasks.Presentation.MailboxStatistics mailboxStatistics = (Microsoft.Exchange.Management.MapiTasks.Presentation.MailboxStatistics)((object)tpresentationObject); mailboxStatistics.ServerName = this.server.Name; mailboxStatistics.DatabaseName = database.Name; mailboxStatistics.Database = database.Identity; mailboxStatistics.IsDatabaseCopyActive = (database.Server.ObjectGuid == this.server.Guid); MailboxDatabase mailboxDatabase = database as MailboxDatabase; if (mailboxDatabase != null) { mailboxStatistics.DatabaseIssueWarningQuota = mailboxDatabase.IssueWarningQuota; mailboxStatistics.DatabaseProhibitSendQuota = mailboxDatabase.ProhibitSendQuota; mailboxStatistics.DatabaseProhibitSendReceiveQuota = mailboxDatabase.ProhibitSendReceiveQuota; } if (mailboxId != null && this.GetMoveHistoryOption() != MoveHistoryOption.None) { UserMailboxFlags userMailboxFlags = UserMailboxFlags.None; if (database.Recovery) { userMailboxFlags |= UserMailboxFlags.RecoveryMDB; } if (mailboxStatistics.IsMoveDestination ?? false) { userMailboxFlags |= UserMailboxFlags.MoveDestination; } else if (mailboxStatistics.DisconnectReason != null) { if (mailboxStatistics.DisconnectReason.Value == MailboxState.SoftDeleted) { userMailboxFlags |= UserMailboxFlags.SoftDeleted; } else { userMailboxFlags |= UserMailboxFlags.Disconnected; } } try { mailboxStatistics.MoveHistory = MoveHistoryEntry.LoadMoveHistory(mailboxId.MailboxGuid, database.Id.ObjectGuid, this.GetMoveHistoryOption() == MoveHistoryOption.IncludeMoveHistoryAndReport, userMailboxFlags); } catch (LocalizedException exception) { base.WriteError(exception, ErrorCategory.ResourceUnavailable, mailboxId); } } } bool flag = true; if (this.isRunningMailboxStatisticsTask) { Exception ex = null; try { QueryFilter internalFilter = this.InternalFilter; if (internalFilter != null && !OpathFilterEvaluator.FilterMatches(internalFilter, (Microsoft.Exchange.Data.Mapi.MailboxStatistics)((object)tpresentationObject))) { flag = false; } } catch (InvalidCastException ex2) { ex = ex2; } catch (ParsingException ex3) { ex = ex3; } catch (ArgumentOutOfRangeException ex4) { ex = ex4; } if (ex != null) { base.WriteError(new MdbAdminTaskException(Strings.ErrorInvalidMailboxStatisticsFilter(this.InternalFilter.ToString())), ErrorCategory.InvalidArgument, this.InternalFilter); } } if (flag) { this.WriteResult(tpresentationObject); } if (this.Identity != null && this.isRunningMailboxStatisticsTask) { TaskLogger.LogExit(); return; } } } finally { if (tpresentationObject != null) { tpresentationObject.Dispose(); } } } } catch (DatabaseUnavailableException ex5) { if (this.Identity == null && this.Database == null) { base.WriteWarning(ex5.Message); } else { base.WriteError(ex5, ErrorCategory.ResourceUnavailable, database); } } catch (MapiObjectNotFoundException exception2) { if (this.Identity == null || !this.isRunningMailboxStatisticsTask) { base.WriteError(exception2, ErrorCategory.ObjectNotFound, this.Identity); } } } if (this.Identity != null && this.isRunningMailboxStatisticsTask) { TIdentity tidentity = this.Identity; this.WriteWarning(Strings.WarningMailboxNeverBeenLoggedOn(tidentity.ToString(), this.identity.ToString())); } TaskLogger.LogExit(); }