public void EnumerateRestriction(FolderRec folderRec, BadItemKind badItemKind, RestrictionData rest) { if (rest != null) { CommonUtils.ProcessKnownExceptions(delegate { rest.EnumeratePropTags(new CommonUtils.EnumPropTagDelegate(this.EnumeratePtag)); }, delegate(Exception ex) { if (this.reportBadItemsDelegate != null && CommonUtils.ExceptionIsAny(ex, new WellKnownException[] { WellKnownException.DataProviderPermanent, WellKnownException.CorruptData })) { List <BadMessageRec> list = new List <BadMessageRec>(1); list.Add(BadMessageRec.Folder(folderRec, badItemKind, ex)); this.reportBadItemsDelegate(list); return(true); } return(false); }); this.hasUnresolvedMappings = true; } }
internal static BadMessageRec Folder(FolderRec folderRec, BadItemKind kind, Exception failure) { return(new BadMessageRec { Kind = kind, EntryId = BadMessageRec.ComputeKey(folderRec.EntryId, kind), FolderId = folderRec.EntryId, FolderName = folderRec.FolderName, Failure = FailureRec.Create(failure), RawFailure = failure }); }
private static byte[] ComputeKey(byte[] entryId, BadItemKind kind, PropTag propTag) { return(CommonUtils.GetSHA512Hash(string.Format("{0}{1}{2}", TraceUtils.DumpEntryId(entryId), kind, propTag))); }
public SimpleBadItem(string name, BadItemKind kind, string configName) : this(name, null, new BadItemKind?(kind), configName) { }
internal Report(ReportData reportData) { SessionStatistics stats = new SessionStatistics(); SessionStatistics stats2 = new SessionStatistics(); this.SessionStatistics = new SessionStatistics(); this.ArchiveSessionStatistics = new SessionStatistics(); foreach (ReportEntry reportEntry in reportData.Entries) { if ((reportEntry.Flags & (ReportEntryFlags.TargetThrottleDurations | ReportEntryFlags.SourceThrottleDurations)) != ReportEntryFlags.None) { if ((reportEntry.Flags & ReportEntryFlags.SourceThrottleDurations) != ReportEntryFlags.None) { this.SourceThrottles = new Throttles(reportEntry.SourceThrottleDurations); } if ((reportEntry.Flags & ReportEntryFlags.TargetThrottleDurations) != ReportEntryFlags.None) { this.TargetThrottles = new Throttles(reportEntry.TargetThrottleDurations); } } else { if (reportEntry.Type == ReportEntryType.Debug) { this.AddToLazyList <ReportEntry>(ref this.debugEntries, reportEntry); } else { this.AddToLazyList <ReportEntry>(ref this.entries, reportEntry); } if (reportEntry.Type == ReportEntryType.Warning || reportEntry.Type == ReportEntryType.WarningCondition) { this.AddToLazyList <ReportEntry>(ref this.warnings, reportEntry); } if (reportEntry.Failure != null) { this.AddToLazyList <FailureRec>(ref this.failures, reportEntry.Failure); } if (reportEntry.BadItem != null) { BadItemKind kind = reportEntry.BadItem.Kind; if (kind == BadItemKind.LargeItem) { this.AddToLazyList <BadMessageRec>(ref this.largeItems, reportEntry.BadItem); } else { this.AddToLazyList <BadMessageRec>(ref this.badItems, reportEntry.BadItem); } } if ((reportEntry.Flags & ReportEntryFlags.MailboxVerificationResults) != ReportEntryFlags.None && reportEntry.MailboxVerificationResults != null) { this.MailboxVerification = new Report.ListWithToString <FolderSizeRec>(); this.MailboxVerification.AddRange(reportEntry.MailboxVerificationResults); } if ((reportEntry.Flags & ReportEntryFlags.SessionStatistics) != ReportEntryFlags.None) { if (reportEntry.SessionStatistics != null) { if (reportEntry.SessionStatistics.SessionId != this.SessionStatistics.SessionId) { this.SessionStatistics += stats; } stats = reportEntry.SessionStatistics; } if (reportEntry.ArchiveSessionStatistics != null) { if (reportEntry.ArchiveSessionStatistics.SessionId != this.ArchiveSessionStatistics.SessionId) { this.ArchiveSessionStatistics += stats2; } stats2 = reportEntry.ArchiveSessionStatistics; } } if ((reportEntry.Flags & ReportEntryFlags.ConfigObject) != ReportEntryFlags.None && reportEntry.ConfigObject != null) { if ((reportEntry.Flags & ReportEntryFlags.Before) != ReportEntryFlags.None) { if ((reportEntry.Flags & ReportEntryFlags.Source) != ReportEntryFlags.None) { this.SourceMailboxBeforeMove = reportEntry.ConfigObject; } if ((reportEntry.Flags & ReportEntryFlags.Target) != ReportEntryFlags.None) { this.TargetMailUserBeforeMove = reportEntry.ConfigObject; } } if ((reportEntry.Flags & ReportEntryFlags.After) != ReportEntryFlags.None) { if ((reportEntry.Flags & ReportEntryFlags.Source) != ReportEntryFlags.None) { this.SourceMailUserAfterMove = reportEntry.ConfigObject; } if ((reportEntry.Flags & ReportEntryFlags.Target) != ReportEntryFlags.None) { this.TargetMailboxAfterMove = reportEntry.ConfigObject; } } } if ((reportEntry.Flags & ReportEntryFlags.MailboxSize) != ReportEntryFlags.None && reportEntry.MailboxSize != null) { if ((reportEntry.Flags & ReportEntryFlags.Source) != ReportEntryFlags.None) { if ((reportEntry.Flags & ReportEntryFlags.Primary) != ReportEntryFlags.None) { this.SourceMailboxSize = reportEntry.MailboxSize; } if ((reportEntry.Flags & ReportEntryFlags.Archive) != ReportEntryFlags.None) { this.SourceArchiveMailboxSize = reportEntry.MailboxSize; } } if ((reportEntry.Flags & ReportEntryFlags.Target) != ReportEntryFlags.None) { if ((reportEntry.Flags & ReportEntryFlags.Primary) != ReportEntryFlags.None) { this.TargetMailboxSize = reportEntry.MailboxSize; } if ((reportEntry.Flags & ReportEntryFlags.Archive) != ReportEntryFlags.None) { this.TargetArchiveMailboxSize = reportEntry.MailboxSize; } } } if (reportEntry.Connectivity != null) { this.AddToLazyList <Report.ConnectivityRecWithTimestamp>(ref this.connectivity, new Report.ConnectivityRecWithTimestamp(reportEntry.CreationTime, reportEntry.Connectivity)); } } } this.SessionStatistics += stats; this.ArchiveSessionStatistics += stats2; Comparison <DurationInfo> comparison = (DurationInfo x, DurationInfo y) => y.Duration.CompareTo(x.Duration); this.SessionStatistics.SourceProviderInfo.Durations.Sort(comparison); this.SessionStatistics.DestinationProviderInfo.Durations.Sort(comparison); this.ArchiveSessionStatistics.SourceProviderInfo.Durations.Sort(comparison); this.ArchiveSessionStatistics.DestinationProviderInfo.Durations.Sort(comparison); }