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;
     }
 }
示例#2
0
 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
     });
 }
示例#3
0
 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)
 {
 }
示例#5
0
        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);
        }