internal static BadMessageRec MailboxSetting(Exception failure, ItemPropertiesBase item) { return(new BadMessageRec { Kind = BadItemKind.CorruptMailboxSetting, Failure = FailureRec.Create(failure), RawFailure = failure, MessageClass = item.GetType().ToString(), EntryId = item.GetId() }); }
private void SetMailboxSettings() { List <ItemPropertiesBase> mailboxSettings = base.MailboxMerger.SourceMailbox.GetMailboxSettings(GetMailboxSettingsFlags.Finalize); if (mailboxSettings != null) { List <BadMessageRec> badItems = new List <BadMessageRec>(); using (List <ItemPropertiesBase> .Enumerator enumerator = mailboxSettings.GetEnumerator()) { while (enumerator.MoveNext()) { ItemPropertiesBase item = enumerator.Current; if (!base.MailboxMerger.SyncState.BadItems.ContainsKey(item.GetId())) { CommonUtils.ProcessKnownExceptions(delegate { ExecutionContext.Create(new DataContext[] { new ItemPropertiesDataContext(item) }).Execute(delegate { this.MailboxMerger.DestMailbox.SetMailboxSettings(item); }); }, delegate(Exception failure) { if (MapiUtils.IsBadItemIndicator(failure)) { badItems.Add(BadMessageRec.MailboxSetting(failure, item)); return(true); } return(false); }); } } } if (badItems != null && badItems.Count > 0) { base.MailboxMerger.ReportBadItems(badItems); } } base.ScheduleWorkItem(new Action(this.MservSwitchOver), WorkloadType.Unknown); }