示例#1
0
 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()
     });
 }
示例#2
0
        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);
        }