internal static PublicFolderMailboxDiagnosticsInfo Load(PublicFolderSession session, DiagnosticsLoadFlags loadFlags, Action <LocalizedString, LocalizedString, int> writeProgress)
        {
            PublicFolderMailboxDiagnosticsInfo publicFolderMailboxDiagnosticsInfo = new PublicFolderMailboxDiagnosticsInfo("Public Folder Diagnostics Information");

            publicFolderMailboxDiagnosticsInfo.SyncInfo      = (PublicFolderMailboxDiagnosticsInfo.LoadMailboxInfo <PublicFolderMailboxSynchronizerInfo>(session, "PublicFolderSyncInfo", "PublicFolderLastSyncCylceLog") as PublicFolderMailboxSynchronizerInfo);
            publicFolderMailboxDiagnosticsInfo.AssistantInfo = (PublicFolderMailboxDiagnosticsInfo.LoadMailboxInfo <PublicFolderMailboxAssistantInfo>(session, "PublicFolderAssistantInfo", "PublicFolderLastAssistantCycleLog") as PublicFolderMailboxAssistantInfo);
            if ((loadFlags & DiagnosticsLoadFlags.DumpsterInfo) != DiagnosticsLoadFlags.Default)
            {
                publicFolderMailboxDiagnosticsInfo.DumpsterInfo = PublicFolderMailboxDumpsterInfo.LoadInfo(session, writeProgress);
            }
            if ((loadFlags & DiagnosticsLoadFlags.HierarchyInfo) != DiagnosticsLoadFlags.Default)
            {
                publicFolderMailboxDiagnosticsInfo.HierarchyInfo = PublicFolderMailboxHierarchyInfo.LoadInfo(session, writeProgress);
            }
            return(publicFolderMailboxDiagnosticsInfo);
        }
Example #2
0
        internal static PublicFolderMailboxHierarchyInfo LoadInfo(PublicFolderSession session, Action <LocalizedString, LocalizedString, int> writeProgress)
        {
            int num   = 1;
            int num2  = 0;
            int num3  = 0;
            int num4  = 0;
            int num5  = 0;
            int num6  = 0;
            int num7  = 0;
            int num8  = 0;
            int num9  = 0;
            int num10 = 0;
            int num11 = 0;
            int num12 = 1;

            using (Folder folder = Folder.Bind(session, session.GetIpmSubtreeFolderId(), PublicFolderMailboxHierarchyInfo.PublicFoldersProperties))
            {
                num2 = folder.GetValueOrDefault <int>(FolderSchema.ChildCount, 0);
                using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.DeepTraversal, null, null, PublicFolderMailboxHierarchyInfo.PublicFoldersProperties))
                {
                    int  estimatedRowCount = queryResult.EstimatedRowCount;
                    bool flag  = false;
                    int  num13 = 0;
                    int  num14 = 0;
                    for (;;)
                    {
                        object[][] rows = queryResult.GetRows(10000);
                        if (rows == null || rows.Length == 0)
                        {
                            break;
                        }
                        if (num14 == 0 && estimatedRowCount > rows.Length && writeProgress != null)
                        {
                            flag = true;
                        }
                        foreach (object[] array2 in rows)
                        {
                            num14++;
                            if (flag)
                            {
                                if (num14 > estimatedRowCount)
                                {
                                    estimatedRowCount = queryResult.EstimatedRowCount;
                                }
                                int num15 = num14 * 100 / estimatedRowCount;
                                if (num15 != num13 && num15 <= 100)
                                {
                                    writeProgress(ClientStrings.PublicFolderMailboxHierarchyInfo, ClientStrings.PublicFolderMailboxInfoFolderEnumeration(num14, estimatedRowCount), num15);
                                    num13 = num15;
                                }
                            }
                            object obj            = array2[0];
                            int    num16          = (obj is int) ? ((int)obj) : 0;
                            object obj2           = array2[1];
                            bool   flag2          = obj2 is bool && (bool)obj2;
                            object obj3           = array2[2];
                            int    num17          = (obj3 is int) ? ((int)obj3) : 0;
                            string containerClass = array2[3] as string;
                            num++;
                            if (num4 < num16)
                            {
                                num4 = num16;
                            }
                            if (flag2)
                            {
                                num3++;
                            }
                            if (num2 < num17)
                            {
                                num2 = num17;
                            }
                            if (ObjectClass.IsCalendarFolder(containerClass))
                            {
                                num5++;
                            }
                            else if (ObjectClass.IsContactsFolder(containerClass))
                            {
                                num6++;
                            }
                            else if (ObjectClass.IsInfoPathFormFolder(containerClass))
                            {
                                num7++;
                            }
                            else if (ObjectClass.IsJournalFolder(containerClass))
                            {
                                num8++;
                            }
                            else if (ObjectClass.IsMessageFolder(containerClass))
                            {
                                num11++;
                            }
                            else if (ObjectClass.IsNotesFolder(containerClass))
                            {
                                num9++;
                            }
                            else if (ObjectClass.IsTaskFolder(containerClass))
                            {
                                num10++;
                            }
                            else
                            {
                                num12++;
                            }
                        }
                    }
                }
            }
            PublicFolderMailboxHierarchyInfo publicFolderMailboxHierarchyInfo = new PublicFolderMailboxHierarchyInfo();

            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.TotalFolderCount]      = num;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.MailPublicFolderCount] = num3;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.MaxFolderChildCount]   = num2;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.HierarchyDepth]        = num4;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.CalendarFolderCount]   = num5;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.ContactFolderCount]    = num6;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.InfoPathFolderCount]   = num7;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.JournalFolderCount]    = num8;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.NoteFolderCount]       = num11;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.StickyNoteFolderCount] = num9;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.TaskFolderCount]       = num10;
            publicFolderMailboxHierarchyInfo[PublicFolderHierarchyInfoSchema.OtherFolderCount]      = num12;
            publicFolderMailboxHierarchyInfo.propertyBag.ResetChangeTracking();
            return(publicFolderMailboxHierarchyInfo);
        }